Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/CloudManagerClient.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/CloudManagerClient.cs	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/CloudManagerClient.cs	(revision 7324)
@@ -16,5 +16,8 @@
     }
 
-    private CloudManagerClient() { }
+    private CloudManagerClient() {
+      subscriptions = new ItemList<Subscription>();
+      azureProvider = new AzureProvider();
+    }
 
     #region Properties
@@ -59,5 +62,6 @@
 
       try {
-
+        IItemList<Subscription> subs = new ItemList<Subscription>(Subscriptions);
+        // TODO ...
       }
       catch {
@@ -71,4 +75,25 @@
     #endregion
 
+    public void Add(Subscription subscription) {
+      if (subscription == null) {
+        throw new ArgumentNullException("subscription", "Subscription must not be null.");
+      }
+      if (Subscriptions.Contains(subscription)) {
+        Subscriptions.Remove(subscription);
+      }
+      Subscriptions.Add(subscription);
+    }
+
+    public void Remove(Subscription subscription) {
+      if (subscription == null) {
+        throw new ArgumentNullException("subscription", "Subscription must not be null.");
+      }
+      if (Subscriptions.Contains(subscription)) {
+        Subscriptions.Remove(subscription);
+      }
+    }
+
+
+
 
   }
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/HeuristicLab.Clients.Hive.CloudManager-3.3.csproj
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/HeuristicLab.Clients.Hive.CloudManager-3.3.csproj	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/HeuristicLab.Clients.Hive.CloudManager-3.3.csproj	(revision 7324)
@@ -38,8 +38,12 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Data.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Visualization.ChartControlsExtensions-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
     <Reference Include="System" />
     <Reference Include="System.Core" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Windows.Forms.DataVisualization" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -124,4 +128,8 @@
       <Name>HeuristicLab.MainForm-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
+      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
+      <Name>HeuristicLab.Optimization.Views-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
       <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/AddSubscriptionDialog.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/AddSubscriptionDialog.Designer.cs	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/AddSubscriptionDialog.Designer.cs	(revision 7324)
@@ -117,4 +117,5 @@
       this.btnCancel.Text = "Cancel";
       this.btnCancel.UseVisualStyleBackColor = true;
+      this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
       // 
       // progressBar
@@ -134,4 +135,5 @@
       this.btnOk.Text = "OK";
       this.btnOk.UseVisualStyleBackColor = true;
+      this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
       // 
       // AddSubscriptionDialog
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/AddSubscriptionDialog.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/AddSubscriptionDialog.cs	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/AddSubscriptionDialog.cs	(revision 7324)
@@ -26,4 +26,5 @@
     private void btnOk_Click(object sender, System.EventArgs e) {
       this.progressBar.Visible = true;
+      //this.progressBar.Style = ProgressBarStyle.Continuous;
       worker.RunWorkerAsync();
     }
@@ -56,5 +57,5 @@
       try {
         worker.ReportProgress(25, "Add Subscription");
-        //Subscription = service.GetSubscriptionInfo(txtSubscriptionId.Text, txtCertThumbprint.Text);
+        Subscription = CloudManagerClient.Instance.AzureProvider.GetSubscriptionInfo(txtSubscriptionId.Text, txtCertThumbprint.Text);
         Subscription.SaveToConfig = cbSaveSubscription.Checked;
         Subscription.DiscoverServices = cbDiscoverServices.Checked;
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/CloudResourcesView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/CloudResourcesView.Designer.cs	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/CloudResourcesView.Designer.cs	(revision 7324)
@@ -24,4 +24,5 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CloudResourcesView));
       this.splitContainer1 = new System.Windows.Forms.SplitContainer();
@@ -32,4 +33,5 @@
       this.btnAddSubscription = new System.Windows.Forms.Button();
       this.treeCloudResources = new System.Windows.Forms.TreeView();
+      this.imageListCloudResources = new System.Windows.Forms.ImageList(this.components);
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
       this.splitContainer1.Panel1.SuspendLayout();
@@ -99,4 +101,5 @@
       this.btnAddSubscription.TabIndex = 1;
       this.btnAddSubscription.UseVisualStyleBackColor = true;
+      this.btnAddSubscription.Click += new System.EventHandler(this.btnAddSubscription_Click);
       // 
       // treeCloudResources
@@ -105,8 +108,17 @@
             | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
+      this.treeCloudResources.ImageIndex = 0;
+      this.treeCloudResources.ImageList = this.imageListCloudResources;
       this.treeCloudResources.Location = new System.Drawing.Point(3, 34);
       this.treeCloudResources.Name = "treeCloudResources";
+      this.treeCloudResources.SelectedImageIndex = 0;
       this.treeCloudResources.Size = new System.Drawing.Size(243, 460);
       this.treeCloudResources.TabIndex = 0;
+      // 
+      // imageListCloudResources
+      // 
+      this.imageListCloudResources.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.imageListCloudResources.ImageSize = new System.Drawing.Size(16, 16);
+      this.imageListCloudResources.TransparentColor = System.Drawing.Color.Transparent;
       // 
       // CloudResourcesView
@@ -134,4 +146,5 @@
     private System.Windows.Forms.Button btnAddSlaveService;
     private System.Windows.Forms.Label lblRefresh;
+    private System.Windows.Forms.ImageList imageListCloudResources;
   }
 }
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/CloudResourcesView.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/CloudResourcesView.cs	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/CloudResourcesView.cs	(revision 7324)
@@ -16,4 +16,6 @@
     private int updateInterval = 15000;
     private DateTime dueTime;
+    private const int subscriptionImageIndex = 0;
+    private const int serviceImageIndex = 1;
 
     public new IItemList<Subscription> Content {
@@ -25,4 +27,8 @@
       InitializeComponent();
 
+      treeCloudResources.ImageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.NetworkCenterLarge);
+      treeCloudResources.ImageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.MonitorLarge);
+
+      Content = CloudManagerClient.Instance.Subscriptions;
       CloudManagerClient.Instance.Refreshing += new EventHandler(Instance_Refreshing);
       CloudManagerClient.Instance.Refreshed += new EventHandler(Instance_Refreshed);
@@ -42,10 +48,63 @@
     }
 
-    void Instance_Refreshing(object sender, EventArgs e) {
+    #region Register Content Events
+    protected override void DeregisterContentEvents() {
+      Content.ItemsAdded -= new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Subscription>>(Content_ItemsAdded);
+      Content.ItemsRemoved -= new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Subscription>>(Content_ItemsRemoved);
+      base.DeregisterContentEvents();
+    }
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ItemsAdded += new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Subscription>>(Content_ItemsAdded);
+      Content.ItemsRemoved += new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Subscription>>(Content_ItemsRemoved);
+    }
+    #endregion
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      if (Content == null || Content.Count == 0) {
+        btnAddSlaveService.Enabled = false;
+        btnDelete.Enabled = false;
+        btnSave.Enabled = false;
+      } else {
+        btnAddSlaveService.Enabled = true;
+        btnDelete.Enabled = true;
+        btnSave.Enabled = true;
+      }
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      SetEnabledStateOfControls();
+      if (Content == null) {
+        //slaveView.Content = null;
+        treeCloudResources.Nodes.Clear();
+      } else {
+        treeCloudResources.Nodes.Clear();
+        foreach (Subscription sub in Content) {
+          TreeNode tn = new TreeNode();
+          tn.Tag = sub;
+          tn.Text = sub.SubscriptionName;
+          tn.ImageIndex = subscriptionImageIndex;
+          tn.SelectedImageIndex = tn.ImageIndex;
+          treeCloudResources.Nodes.Add(tn);
+        }
+      }
+    }
+
+    private void Instance_Refreshing(object sender, EventArgs e) {
       Debug.WriteLine("Instance_Refreshing");
     }
 
-    void Instance_Refreshed(object sender, EventArgs e) {
+    private void Instance_Refreshed(object sender, EventArgs e) {
       Debug.WriteLine("Instance_Refreshed");
+    }
+
+    private void Content_ItemsRemoved(object sender, Collections.CollectionItemsChangedEventArgs<Collections.IndexedItem<Subscription>> e) {
+      OnContentChanged();
+    }
+
+    private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<Collections.IndexedItem<Subscription>> e) {
+      OnContentChanged();
     }
 
@@ -67,4 +126,16 @@
       }
     }
+
+    private void btnAddSubscription_Click(object sender, EventArgs e) {
+      using (var form = new AddSubscriptionDialog()) {
+        form.ShowDialog();
+        if (!form.ErrorOccured) {
+          if (form.Subscription != null) {
+            Subscription sub = form.Subscription;
+            CloudManagerClient.Instance.Add(sub);
+          }
+        }
+      }
+    }
   }
 }
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/HiveCloudManagerView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/HiveCloudManagerView.Designer.cs	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/HiveCloudManagerView.Designer.cs	(revision 7324)
@@ -33,6 +33,6 @@
       // tabResources
       // 
-      this.tabResources.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
+      this.tabResources.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
             | System.Windows.Forms.AnchorStyles.Right)));
       this.tabResources.Controls.Add(this.tabResource);
@@ -56,6 +56,6 @@
       // cloudResourcesView
       // 
-      this.cloudResourcesView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
+      this.cloudResourcesView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
             | System.Windows.Forms.AnchorStyles.Right)));
       this.cloudResourcesView.Caption = "Cloud Resources View";
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/HiveCloudManagerView.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/HiveCloudManagerView.cs	(revision 7317)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/HiveCloudManagerView.cs	(revision 7324)
@@ -38,4 +38,5 @@
     public HiveCloudManagerView() {
       InitializeComponent();
+      cloudResourcesView.Content = CloudManagerClient.Instance.Subscriptions;
     }
 
