Improvements to the Cloud Information system view and model. Extending
Item providers for different IS model entities in order to correctly
show the labels and icon in the view. 

Also adding the CreateKeyPair and AddKeyPair features for the TOSCA
editor.

Change-Id: I9d342932f2e1639490af485ab28a1324e6fbf544
Signed-off-by: Nicholas Loulloudes <loulloudes.n@cs.ucy.ac.cy>
diff --git a/plugins/org.eclipse.camf.connectors.aws.ui/icons/obj16/cp.gif b/plugins/org.eclipse.camf.connectors.aws.ui/icons/obj16/cp.gif
new file mode 100644
index 0000000..ad2371a
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws.ui/icons/obj16/cp.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml b/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml
index 57485e6..e17a4ae 100644
--- a/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml
+++ b/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml
@@ -23,5 +23,12 @@
             name="AWS Auth Token UI Factory">
       </factory>
    </extension>
+<extension
+      point="org.eclipse.camf.ui.cloudProviderIcon">
+   <icon
+         location="icons/obj16/cp.gif"
+         type="org.eclipse.camf.connectors.aws">
+   </icon>
+</extension>
 
 </plugin>
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java
index 0424dff..82d9e49 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java
@@ -27,6 +27,7 @@
 import org.eclipse.camf.core.ICoreProblems;
 import org.eclipse.camf.core.model.CloudModel;
 import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudProviderProperties;
 import org.eclipse.camf.core.model.ISerializableElement;
 import org.eclipse.camf.core.model.impl.AbstractCloudElement;
 import org.eclipse.camf.core.reporting.ProblemException;
@@ -55,7 +56,7 @@
  * @see AWSCloudProviderCreator
  */
 public class AWSCloudProviderProperties extends AbstractCloudElement
-  implements ISerializableElement
+  implements ISerializableElement, ICloudProviderProperties
 {
 
   /** Name to reference the properties in the {@link CloudModel}. */
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java
index 186128c..54c4b71 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java
@@ -46,6 +46,7 @@
 import org.eclipse.camf.infosystem.model.base.IExtendedInfoService;
 import org.eclipse.camf.infosystem.model.base.Images;
 import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.Keys;
 import org.eclipse.camf.infosystem.model.base.Root;
 import org.eclipse.camf.infosystem.model.base.Security;
 import org.eclipse.camf.infosystem.model.base.VMI;
@@ -65,6 +66,7 @@
 
   /** The name of the file to save this cloud element in. */
   public static String STORAGE_NAME = ".ec2InfoService"; //$NON-NLS-1$
+  private static String CP_TYPE = "org.eclipse.camf.connectors.aws";
   private AWSCloudProvider awsCP;
   private EC2Service ec2Service;
   public static AWSInfoCache infoCache = null;
@@ -206,6 +208,15 @@
     } else if( category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_DEPLOYMENT_SERVICES ) ) )
     {
       result = fetchDeploymentServices( parent, cp, monitor );
+    } else if (category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_ALL ) )) {
+      fetchImages( parent,
+                   cp,
+                   monitor,
+                   new EC2OpDescribeImages( getEc2() ) );
+      fetchKeyPairs( parent,
+                     cp,
+                     monitor,
+                     new EC2OpDescribeKeypairs( getEc2() ) );
     }
 
     if (result == null)
@@ -270,6 +281,7 @@
       if( infoCP == null ) {
         infoCP = InfoService.getInstance().getFactory().createCloudProvider();
         infoCP.setName( cp.getName() );
+        infoCP.setType( CP_TYPE );
         newCP = true;
       }
       
@@ -330,18 +342,20 @@
       if( infoCP == null ) {
         infoCP = InfoService.getInstance().getFactory().createCloudProvider();
         infoCP.setName( cp.getName() );
+        infoCP.setType( CP_TYPE );
         newCP = true;
       }
-      
              
       Security security = InfoService.getInstance().getFactory().createSecurity();
+      Keys keys = InfoService.getInstance().getFactory().createKeys();
+      security.setKeys( keys );
       infoCP.setSecurity( security );      
       
       for( KeyPair remoteKeyPair : operation.getResult() ) {
         org.eclipse.camf.infosystem.model.base.KeyPair kp = InfoSystemFactory.eINSTANCE.createKeyPair();
         kp.setName( remoteKeyPair.getKeyName() );        
         kp.setUID( remoteKeyPair.getFingerprint() );
-        security.getKeys().add( kp );
+        keys.getKeypairs().add( kp );
       }
       
       if (newCP)
diff --git a/plugins/org.eclipse.camf.connectors.openstack.ui/icons/obj16/cp.gif b/plugins/org.eclipse.camf.connectors.openstack.ui/icons/obj16/cp.gif
new file mode 100644
index 0000000..1d80db1
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack.ui/icons/obj16/cp.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml b/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml
index 6693437..5d698b5 100644
--- a/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml
+++ b/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml
@@ -23,4 +23,11 @@
             name="OpenStack Auth Token UI Factory">
       </factory>
    </extension>
+<extension
+      point="org.eclipse.camf.ui.cloudProviderIcon">
+   <icon
+         location="/icons/obj16/cp.gif"
+         type="org.eclipse.camf.connectors.openstack">
+   </icon>
+</extension>
 </plugin>
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java
index 6cd616d..c13ca20 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java
@@ -16,6 +16,8 @@
 
 import java.net.URI;
 
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDeployApplication;
+import org.eclipse.camf.connectors.openstack.operation.OperationExecuter;
 import org.eclipse.camf.core.model.ICloudApplicationDescription;
 import org.eclipse.camf.core.model.ICloudContainer;
 import org.eclipse.camf.core.model.ICloudDeploymentID;
@@ -24,6 +26,7 @@
 import org.eclipse.camf.core.model.ICloudProvider;
 import org.eclipse.camf.core.model.impl.AbstractCloudElement;
 import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.camf.tosca.core.TOSCAModel;
 import org.eclipse.camf.tosca.core.TOSCAResource;
 import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.resources.IResource;
@@ -148,7 +151,23 @@
                                                final IProgressMonitor monitor )
     throws ProblemException
   {
-    // TODO Auto-generated method stub
+    OpenStackOpDeployApplication deployOperation = null;
+    try {
+      monitor.beginTask( "Deploying VMIs", 2 );
+      deployOperation = new OpenStackOpDeployApplication( OpenStackClient.getInstance(),
+                                                   description );
+      
+        if( deployOperation.getException() != null ) {
+        throw deployOperation.getException();
+      }
+      new OperationExecuter().execOp( deployOperation );
+    } catch( Exception e ) {
+      e.printStackTrace( );
+      
+    } finally {
+      monitor.done();
+    }
+    
     return null;
   }
 
@@ -165,7 +184,28 @@
                                                final IProgressMonitor monitor )
     throws ProblemException
   {
-    // TODO Auto-generated method stub
+    OpenStackOpDeployApplication deployOperation = null;
+    try {
+      monitor.beginTask( "Deploying VMIs", 2 );
+      TOSCAModel model;
+      if (description instanceof TOSCAModel){
+        model = (TOSCAModel) description;
+      }
+
+      deployOperation = new OpenStackOpDeployApplication( OpenStackClient.getInstance(),
+                                                   (TOSCAResource) description );
+      
+        if( deployOperation.getException() != null ) {
+        throw deployOperation.getException();
+      }
+      new OperationExecuter().execOp( deployOperation );
+    } catch( Exception e ) {
+      e.printStackTrace( );
+      
+    } finally {
+      monitor.done();
+    }
+    
     return null;
   }
 
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java
index 9ea5177..4877b5c 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java
@@ -18,6 +18,7 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.camf.connectors.openstack.info.IOpenStackCategories;
 import org.eclipse.camf.connectors.openstack.info.OpenStackInfoService;
 import org.eclipse.camf.connectors.openstack.internal.Activator;
 import org.eclipse.camf.connectors.openstack.internal.Messages;
@@ -30,6 +31,7 @@
 import org.eclipse.camf.core.model.ICloudResourceCategory;
 import org.eclipse.camf.core.model.ISerializableElement;
 import org.eclipse.camf.core.model.impl.AbstractCloudProvider;
+import org.eclipse.camf.core.model.impl.CloudResourceCategoryFactory;
 import org.eclipse.camf.core.reporting.ProblemException;
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileStore;
@@ -57,6 +59,14 @@
    * Name of this Cloud Provider used in the {@link IFileStore}.
    */
   private String cpName;
+  
+  /** The categories published by this {@link IVirtualOrganization}. */
+  public static ICloudResourceCategory[] STANDARD_RESOURCE_CATEGORIES = new ICloudResourceCategory[]{
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_IMAGES ),
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_NETWORKING ),
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_SECURITY),
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_STORAGE )
+  };
 
 
   /**
@@ -186,8 +196,8 @@
                      problemEx );
     }
 
-//    Collections.addAll( categoriesList,
-//                        OSCloudProvider.STANDARD_RESOURCE_CATEGORIES );
+    Collections.addAll( categoriesList,
+                        OpenStackCloudProvider.STANDARD_RESOURCE_CATEGORIES );
     return categoriesList.toArray( new ICloudResourceCategory[ categoriesList.size() ] );
   }
 
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java
index 0c5b9c9..d5f88df 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java
@@ -27,6 +27,7 @@
 import org.eclipse.camf.core.ICoreProblems;
 import org.eclipse.camf.core.model.CloudModel;
 import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudProviderProperties;
 import org.eclipse.camf.core.model.ISerializableElement;
 import org.eclipse.camf.core.model.impl.AbstractCloudElement;
 import org.eclipse.camf.core.reporting.ProblemException;
@@ -55,7 +56,7 @@
  * @see OpenStackCloudProviderCreator
  */
 public class OpenStackCloudProviderProperties extends AbstractCloudElement
-  implements ISerializableElement
+  implements ISerializableElement, ICloudProviderProperties
 {
 
   /** Name to reference the properties in the {@link CloudModel}. */
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java
index d329583..9628f96 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
-
+ * Copyright (c) 2014 Laboratory for Internet Computing, University of Cyprus.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,7 +10,7 @@
  * project number: FP7-317790  http://www.celarcloud.eu
  *
  * Contributors:
- * 	Nicholas Loulloudes - initial API and implementation
+ *  Nicholas Loulloudes - initial API and implementation
  *******************************************************************************/
 package org.eclipse.camf.connectors.openstack.info;
 
@@ -20,16 +20,21 @@
 import org.eclipse.camf.connectors.openstack.OpenStackApplicationDeploymentService;
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
 import org.eclipse.camf.connectors.openstack.OpenStackCloudProvider;
-import org.eclipse.camf.connectors.openstack.OpenStackService;
-import org.eclipse.camf.connectors.openstack.internal.Activator;
 import org.eclipse.camf.connectors.openstack.internal.Messages;
 import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpDescribeImages;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpDescribeNetworks;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpFlavors;
 import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpKeyPairs;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpSecurityGroups;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeFlavors;
 import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeImages;
 import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeKeyPairs;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeNetworks;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeSecurityGroups;
 import org.eclipse.camf.connectors.openstack.operation.OpenStackOpExceptions;
 import org.eclipse.camf.connectors.openstack.operation.OperationExecuter;
 import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudInfoService;
 import org.eclipse.camf.core.model.ICloudProvider;
 import org.eclipse.camf.core.model.ICloudResource;
 import org.eclipse.camf.core.model.ICloudResourceCategory;
@@ -40,37 +45,48 @@
 import org.eclipse.camf.infosystem.InfoService;
 import org.eclipse.camf.infosystem.model.base.AbstractInfoCache;
 import org.eclipse.camf.infosystem.model.base.CloudProvider;
+import org.eclipse.camf.infosystem.model.base.Flavors;
+import org.eclipse.camf.infosystem.model.base.Groups;
 import org.eclipse.camf.infosystem.model.base.IExtendedInfoService;
 import org.eclipse.camf.infosystem.model.base.Images;
 import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.Keys;
+import org.eclipse.camf.infosystem.model.base.Networks;
 import org.eclipse.camf.infosystem.model.base.Root;
 import org.eclipse.camf.infosystem.model.base.Security;
 import org.eclipse.camf.infosystem.model.base.VMI;
 import org.eclipse.camf.infosystem.model.base.VirtualMachineImage;
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor;
+import org.eclipse.camf.infosystem.model.base.VirtualNetwork;
 import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.jclouds.compute.domain.Image;
+import org.jclouds.openstack.neutron.v2.domain.Network;
+import org.jclouds.openstack.nova.v2_0.domain.Flavor;
 import org.jclouds.openstack.nova.v2_0.domain.KeyPair;
+import org.jclouds.openstack.nova.v2_0.domain.SecurityGroup;
 
 /**
  * @author Nicholas Loulloudes
- *
  */
-public class OpenStackInfoService extends AbstractCloudInfoSystem implements IExtendedInfoService {
-  
+public class OpenStackInfoService extends AbstractCloudInfoSystem
+  implements IExtendedInfoService
+{
+
   /** The name of the file to save this grid element in. */
   public static String STORAGE_NAME = ".osInfoService"; //$NON-NLS-1$
+  private static String CP_TYPE = "org.eclipse.camf.connectors.openstack";
   private OpenStackCloudProvider osCP;
-  
-  
-  public OpenStackInfoService (final OpenStackCloudProvider cp) {
+
+  public OpenStackInfoService( final OpenStackCloudProvider cp ) {
     this.osCP = cp;
   }
-  
-  /* (non-Javadoc)
+
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudResource#getURI()
    */
   @Override
@@ -78,30 +94,33 @@
     return this.osCP.getProperties().getOpenStackEndpoint(); //$NON-NLS-1$
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getName()
    */
   @Override
   public String getName() {
-      String result = "OpenStack @ ";
-      try {
-        result += getURI();
-    } catch (ProblemException e) {
-        e.printStackTrace();
+    String result = "OpenStack @ ";
+    try {
+      result += getURI();
+    } catch( ProblemException e ) {
+      e.printStackTrace();
     } //$NON-NLS-1$
-      return result;
+    return result;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getFileStore()
    */
   @Override
   public IFileStore getFileStore() {
-    return getParent().getFileStore().getChild( OpenStackInfoService.STORAGE_NAME );
-
+    return getParent().getFileStore()
+      .getChild( OpenStackInfoService.STORAGE_NAME );
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getPath()
    */
   @Override
@@ -109,7 +128,8 @@
     return getParent().getPath().append( OpenStackInfoService.STORAGE_NAME );
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getResource()
    */
   @Override
@@ -117,7 +137,8 @@
     return null;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getParent()
    */
   @Override
@@ -125,7 +146,8 @@
     return this.osCP;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#isLocal()
    */
   @Override
@@ -133,7 +155,8 @@
     return true;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.IShareableElement#share()
    */
   @Override
@@ -141,8 +164,13 @@
     // TODO Auto-generated method stub
   }
 
-  /* (non-Javadoc)
-   * @see org.eclipse.camf.core.model.ICloudInfoService#fetchResources(org.eclipse.camf.core.model.ICloudContainer, org.eclipse.camf.core.model.ICloudProvider, boolean, java.lang.Class, org.eclipse.core.runtime.IProgressMonitor)
+  /*
+   * (non-Javadoc)
+   * @see
+   * org.eclipse.camf.core.model.ICloudInfoService#fetchResources(org.eclipse
+   * .camf.core.model.ICloudContainer,
+   * org.eclipse.camf.core.model.ICloudProvider, boolean, java.lang.Class,
+   * org.eclipse.core.runtime.IProgressMonitor)
    */
   @Override
   public ICloudResource[] fetchResources( final ICloudContainer parent,
@@ -153,48 +181,75 @@
                                           final IProgressMonitor monitor )
     throws ProblemException
   {
-    
-    
     ICloudResource[] result = null;
-    
     if( category.equals( CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_IMAGES ) ) )
     {
-
       result = fetchImages( parent,
                             cp,
                             monitor,
                             new OpenStackOpDescribeImages( getClient() ) );
-    } else if ( category.equals( CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_SECURITY ) ) )
+    } else if( category.equals( CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_SECURITY ) ) )
     {
-
-      result = fetchKeyPairs( parent,
-                            cp,
-                            monitor,
-                            new OpenStackOpDescribeKeyPairs( getClient() ) );
+      fetchKeyPairs( parent,
+                              cp,
+                              monitor,
+                              new OpenStackOpDescribeKeyPairs( getClient() ) );
+      
+      result = fetchSecurityGroups( parent,
+                              cp,
+                              monitor,
+                              new OpenStackOpDescribeSecurityGroups( getClient() ) );
+    } else if( category.equals( CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_NETWORKING ) ) )
+    {
+      result = fetchNetworks( parent,
+                              cp,
+                              monitor,
+                              new OpenStackOpDescribeNetworks( getClient() ) );
     } else if( category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_DEPLOYMENT_SERVICES ) ) )
     {
       result = fetchDeploymentServices( parent, cp, monitor );
+    } else if (category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_ALL ) )) {
+      fetchImages( parent,
+                   cp,
+                   monitor,
+                   new OpenStackOpDescribeImages( getClient() ) );
+      
+      fetchKeyPairs( parent,
+                     cp,
+                     monitor,
+                     new OpenStackOpDescribeKeyPairs( getClient() ) );
+      fetchSecurityGroups( parent,
+                          cp,
+                          monitor,
+                          new OpenStackOpDescribeSecurityGroups( getClient() ) );
+      fetchNetworks( parent,
+                     cp,
+                     monitor,
+                     new OpenStackOpDescribeNetworks( getClient() ) );
+      fetchFlavors( parent,
+                     cp,
+                     monitor,
+                     new OpenStackOpDescribeFlavors( getClient() ) );
     }
-
-    if (result == null)
-      result = new ICloudResource[0];
-
+    if( result == null )
+      result = new ICloudResource[ 0 ];
     return result;
   }
-  
+
   /**
-   * Fetches the available AMIs of the OpenStack service using the owner as a filter.
+   * Fetches the available AMIs of the OpenStack service using the owner as a
+   * filter.
    * 
    * @param parent the parent of this {@link IGridInfoService}
-   * @param vo the vo initiating the query
+   * @param cp the cp initiating the query
    * @param monitor the monitor to notify of progress
    * @param operation the operation to execute
    * @return an array of {@link OpenStackAMIImage}s.
    */
   public ICloudResource[] fetchImages( final ICloudContainer parent,
-                                      final ICloudProvider cp,
-                                      IProgressMonitor monitor,
-                                      final AbstractOpenStackOpDescribeImages operation )
+                                       final ICloudProvider cp,
+                                       IProgressMonitor monitor,
+                                       final AbstractOpenStackOpDescribeImages operation )
   {
     if( monitor == null ) {
       monitor = new NullProgressMonitor();
@@ -215,6 +270,7 @@
         if( infoCP == null ) {
           infoCP = InfoService.getInstance().getFactory().createCloudProvider();
           infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
           newCP = true;
         }
         Images images = InfoService.getInstance().getFactory().createImages();
@@ -242,32 +298,30 @@
     }
     return null;
   }
-  
+
   /**
-   * Fetches the available KeyPairs of the OpenStack service using the owner as a filter.
+   * Fetches the available Keypairs of the OpenStack service using the owner as
+   * a filter.
    * 
-   * @param parent the parent of this {@link IGridInfoService}
-   * @param vo the vo initiating the query
+   * @param parent the parent of this {@link ICloudInfoService}
+   * @param cp the cp initiating the query
    * @param monitor the monitor to notify of progress
    * @param operation the operation to execute
-   * @return an array of {@link OpenStackAMIImage}s.
+   * @return an array of {@link org.eclipse.camf.infosystem.model.base.KeyPair}s.
    */
   public ICloudResource[] fetchKeyPairs( final ICloudContainer parent,
-                                      final ICloudProvider cp,
-                                      IProgressMonitor monitor,
-                                      final AbstractOpenStackOpKeyPairs operation )
+                                         final ICloudProvider cp,
+                                         IProgressMonitor monitor,
+                                         final AbstractOpenStackOpKeyPairs operation )
   {
     try {
       if( monitor == null ) {
         monitor = new NullProgressMonitor();
       }
-
       // fetch existing AMI images from OpenStack service
       monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
                          2 );
-
       new OperationExecuter().execOp( operation );
-
       monitor.worked( 1 );
       if( operation.getException() == null ) {
         Root root = InfoService.getInstance().getRoot();
@@ -276,17 +330,26 @@
         if( infoCP == null ) {
           infoCP = InfoService.getInstance().getFactory().createCloudProvider();
           infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
           newCP = true;
         }
-        Security security = InfoService.getInstance()
-          .getFactory()
-          .createSecurity();
-        infoCP.setSecurity( security );
+        
+        Security security;
+        if (infoCP.getSecurity() == null) {
+          security = InfoService.getInstance().getFactory().createSecurity();
+          infoCP.setSecurity( security );
+        } else {
+          security = infoCP.getSecurity();
+        }
+        
+        Keys keys = InfoService.getInstance().getFactory().createKeys();
+        security.setKeys( keys );
+
         for( KeyPair remoteKeyPair : operation.getResult() ) {
           org.eclipse.camf.infosystem.model.base.KeyPair kp = InfoSystemFactory.eINSTANCE.createKeyPair();
           kp.setName( remoteKeyPair.getName() );
           kp.setUID( remoteKeyPair.getFingerprint() );
-          security.getKeys().add( kp );
+          keys.getKeypairs().add( kp );
         }
         if( newCP )
           root.getCloudProviders().add( infoCP );
@@ -300,10 +363,177 @@
     } catch( Exception e ) {
       e.printStackTrace();
     }
-    
     return null;
   }
-    
+  
+  
+  /**
+   * Fetches the available Networks of the OpenStack service using the owner as
+   * a filter.
+   * 
+   * @param parent the parent of this {@link ICloudInfoService}
+   * @param cp the cp initiating the query
+   * @param monitor the monitor to notify of progress
+   * @param operation the operation to execute
+   * @return an array of {@link Networks}s.
+   */
+  public ICloudResource[] fetchSecurityGroups( final ICloudContainer parent,
+                                               final ICloudProvider cp,
+                                               IProgressMonitor monitor,
+                                               final AbstractOpenStackOpSecurityGroups operation )
+  {
+    try {
+      if( monitor == null ) {
+        monitor = new NullProgressMonitor();
+      }
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        
+        Security security;
+        if (infoCP.getSecurity() == null) {
+          security = InfoService.getInstance().getFactory().createSecurity();
+          infoCP.setSecurity( security );
+        } else {
+          security = infoCP.getSecurity();
+        }
+        
+        
+        Groups groups = InfoService.getInstance().getFactory().createGroups();
+        security.setGroups( groups );
+        
+        for( SecurityGroup securitygroup : operation.getResult() ) {
+           org.eclipse.camf.infosystem.model.base.SecurityGroup sg = InfoSystemFactory.eINSTANCE
+              .createSecurityGroup();
+          sg.setName( securitygroup.getName() );
+          sg.setUID( securitygroup.getId() );
+          sg.setDescription(securitygroup.getDescription());
+          groups.getSecurityGroups().add( sg );
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return null;
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get keypairs. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.KEYPAIR );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+  
+  public ICloudResource[] fetchNetworks( final ICloudContainer parent,
+                                         final ICloudProvider cp,
+                                         IProgressMonitor monitor,
+                                         final AbstractOpenStackOpDescribeNetworks operation )
+  {
+    try {
+      if( monitor == null ) {
+        monitor = new NullProgressMonitor();
+      }
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        Networks networks = InfoService.getInstance().getFactory().createNetworks();
+        infoCP.setNetworks( networks );
+        for( Network network : operation.getResult() ) {
+          VirtualNetwork vn = InfoSystemFactory.eINSTANCE.createVirtualNetwork();
+          vn.setName( network.getName() );
+          vn.setUID( network.getId() );
+          networks.getNets().add( vn );
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return null;
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get networks list. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.NETWORK );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+  
+  public ICloudResource[] fetchFlavors( final ICloudContainer parent,
+                                         final ICloudProvider cp,
+                                         IProgressMonitor monitor,
+                                         final AbstractOpenStackOpFlavors operation )
+  {
+    try {
+      if( monitor == null ) {
+        monitor = new NullProgressMonitor();
+      }
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        Flavors flavors = InfoService.getInstance().getFactory().createFlavors();
+        infoCP.setFlavors( flavors );
+        for( Flavor flavor : operation.getResult() ) {
+          VirtualMachineImageFlavor vmFlavor = InfoSystemFactory.eINSTANCE.createVirtualMachineImageFlavor();
+          vmFlavor.setName(flavor.getName());
+          vmFlavor.setUID(flavor.getId());
+          vmFlavor.setHdd(String.valueOf(flavor.getDisk()));
+          vmFlavor.setRam(String.valueOf(flavor.getRam()));
+          vmFlavor.setVCPU(String.valueOf(flavor.getVcpus()));
+          flavors.getFlavors().add(vmFlavor);
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return null;
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get networks list. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.NETWORK );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+
   private ICloudService[] fetchDeploymentServices( final ICloudContainer parent,
                                                    final ICloudProvider cp,
                                                    IProgressMonitor monitor )
@@ -319,15 +549,14 @@
     monitor.done();
     return servicesList.toArray( new ICloudService[ servicesList.size() ] );
   }
-  
+
   private OpenStackClient getClient() {
     return OpenStackClient.getInstance();
- }
+  }
 
   @Override
   public AbstractInfoCache getInfoCache() {
     // TODO Auto-generated method stub
     return null;
   }
-  
 }
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java
index 9101359..f68a999 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java
@@ -30,6 +30,7 @@
 import java.util.UUID;
 
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
+import org.eclipse.camf.core.model.ICloudApplicationDescription;
 import org.eclipse.camf.core.model.ICloudProject;
 import org.eclipse.camf.infosystem.model.base.Deployment;
 import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
@@ -73,8 +74,8 @@
 public class OpenStackOpDeployApplication extends
 		AbstractOpenStackOpDeployApplication {
 
-	private final TOSCAResource toscaResource;
-	private final ICloudProject project;
+	private TOSCAResource toscaResource;
+	private ICloudProject project;
 	private final static String DEP_SCRIPTS = "/Artifacts/Deployment Scripts/";
 
 	public enum ActionToDo {
@@ -94,11 +95,21 @@
 	private KeyPairApi keyPairApi = nova.getKeyPairExtensionForZone(this.zone)
 			.get();
 	private ServerApi serverApi = nova.getServerApiForZone(this.zone);
+	private TOSCAModel toscaModel = null;
 
 	public OpenStackOpDeployApplication(final OpenStackClient client,
-			final TOSCAResource tosca) {
-		this.toscaResource = tosca;
-		this.project = this.toscaResource.getProject();
+	                                    final ICloudApplicationDescription description) {
+	  if( description instanceof TOSCAResource ) {
+	      this.toscaResource = ( TOSCAResource ) description;
+	      this.toscaModel = this.toscaResource.getTOSCAModel();
+	      this.project = this.toscaResource.getProject();
+	    } else if (description instanceof TOSCAModel) {
+	      this.toscaModel = (TOSCAModel) description;
+	      this.project = this.toscaModel.getProject();
+	    } else {
+	      this.toscaResource = null;
+	      this.toscaModel = null;
+	    }		
 	}
 
 	public OpenStackOpDeployApplication(final OpenStackClient client,
@@ -125,7 +136,8 @@
 			String start_time = new SimpleDateFormat("dd/M/yyyy hh:mm:ss")
 					.format(Calendar.getInstance().getTime());
 
-			TOSCAModel toscaModel = this.toscaResource.getTOSCAModel();
+	
+//			TOSCAModel toscaModel = this.toscaResource.getTOSCAModel();
 			TServiceTemplate serviceTemplate = toscaModel.getServiceTemplate();
 			List<HashMap<String, String>> xmlinfo = new ArrayList<HashMap<String, String>>();
 			HashMap<String, String> array = null;
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java
index aecf490..473354f 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java
@@ -19,7 +19,6 @@
 import java.util.Set;
 
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
-import org.jclouds.compute.ComputeService;
 import org.jclouds.openstack.nova.v2_0.domain.Flavor;
 import org.jclouds.openstack.nova.v2_0.features.FlavorApi;
 
@@ -39,6 +38,10 @@
 	 * 
 	 * 
 	 */
+	
+	public OpenStackOpDescribeFlavors( final OpenStackClient client ) {
+      this.flavorApi = client.getFlavorApi();
+    }
 
 	public OpenStackOpDescribeFlavors() {
 		this.flavorApi = OpenStackClient.getInstance().getFlavorApi();
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java
index a68c1ad..2a1cd0f 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java
@@ -19,7 +19,6 @@
 import java.util.Set;
 
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
-import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.jclouds.openstack.neutron.v2.domain.Network;
 import org.jclouds.openstack.neutron.v2.features.NetworkApi;
 
@@ -39,6 +38,9 @@
 	 * networks.
 	 * 
 	 */
+    public OpenStackOpDescribeNetworks( final OpenStackClient client ) {
+      this.networkApi = client.getNetworkApi();
+    }
 
 	public OpenStackOpDescribeNetworks() {
 		this.networkApi = OpenStackClient.getInstance().getNetworkApi();
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java
index 914e2a3..4ed0cfa 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java
@@ -33,16 +33,17 @@
 
 	private final SecurityGroupApi SecurityGroupApi;
 
-	/**
-	 * Creates a new {@link OpenStackOpDescribeSecurityGroups} to fetch
-	 * available data
-	 *
-	 */
+  /**
+   * Creates a new {@link OpenStackOpDescribeSecurityGroups} to fetch available
+   * data
+   */
+  public OpenStackOpDescribeSecurityGroups( final OpenStackClient client ) {
+    this.SecurityGroupApi = client.getSecurityGroupApi();
+  }
 
-	public OpenStackOpDescribeSecurityGroups() {
-		this.SecurityGroupApi = OpenStackClient.getInstance()
-				.getSecurityGroupApi();
-	}
+  public OpenStackOpDescribeSecurityGroups() {
+    this.SecurityGroupApi = OpenStackClient.getInstance().getSecurityGroupApi();
+  }
 
 	@Override
 	public void run() {
diff --git a/plugins/org.eclipse.camf.core/plugin.xml b/plugins/org.eclipse.camf.core/plugin.xml
index 7390da2..5560f46 100644
--- a/plugins/org.eclipse.camf.core/plugin.xml
+++ b/plugins/org.eclipse.camf.core/plugin.xml
@@ -172,6 +172,10 @@
             id="org.eclipse.camf.core.model.category.services.deployment"
             name="Cloud Application Deployment Services">
       </category>
+      <category
+            id="org.eclipse.camf.core.model.category.all"
+            name="All Cloud Resources">
+      </category>
    </extension>
    
 </plugin>
diff --git a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/ICloudProviderProperties.java b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/ICloudProviderProperties.java
new file mode 100644
index 0000000..1804309
--- /dev/null
+++ b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/ICloudProviderProperties.java
@@ -0,0 +1,5 @@
+package org.eclipse.camf.core.model;
+
+
+public interface ICloudProviderProperties {
+}
diff --git a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java
index 937fce3..c8a300c 100644
--- a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java
+++ b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java
@@ -1,12 +1,12 @@
 /*****************************************************************************
- * Copyright (c) 2006-2008 g-Eclipse Consortium 
+ * Copyright (c) 2006-2008 CAMF Consortium 
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Initial development of the original code was made for the
- * g-Eclipse project founded by European Union
+ * CAMF project founded by European Union
  * project number: FP6-IST-034327  http://www.geclipse.eu/
  *
  * Contributors:
@@ -32,55 +32,60 @@
 public class CloudResourceCategoryFactory {
   
   /**
-   * Unique ID for the default applications category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default applications category as defined by the CAMF core plug-in.
+   */
+  public static final String ID_ALL = "org.eclipse.camf.core.model.category.all"; //$NON-NLS-1$
+  
+  /**
+   * Unique ID for the default applications category as defined by the CAMF core plug-in.
    */
   public static final String ID_APPLICATIONS = "org.eclipse.camf.core.model.category.applications"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default computing category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default computing category as defined by the CAMF core plug-in.
    */
   public static final String ID_COMPUTING = "org.eclipse.camf.core.model.category.computing"; //$NON-NLS-1$
  
   
   /**
-   * Unique ID for the default data services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default data services category as defined by the CAMF core plug-in.
    */
   public static final String ID_DATA_SERVICES = "org.eclipse.camf.core.model.category.services.data"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default info services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default info services category as defined by the CAMF core plug-in.
    */
   public static final String ID_INFO_SERVICES = "org.eclipse.camf.core.model.category.services.info"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default job services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default job services category as defined by the CAMF core plug-in.
    */
   public static final String ID_JOB_SERVICES = "org.eclipse.camf.core.model.category.services.jobs"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default instrumentation services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default instrumentation services category as defined by the CAMF core plug-in.
    */
   public static final String ID_INSTRUMENTATION_SERVICES = "org.eclipse.camf.core.model.category.services.instrumentation"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default other services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default other services category as defined by the CAMF core plug-in.
    */
   public static final String ID_OTHER_SERVICES = "org.eclipse.camf.core.model.category.services.others"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default storage category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default storage category as defined by the CAMF core plug-in.
    */
   public static final String ID_STORAGE = "org.eclipse.camf.core.model.category.storage"; //$NON-NLS-1$
   
   
   
   /**
-   * Unique ID for the default services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default services category as defined by the CAMF core plug-in.
    */
   public static final String ID_SERVICES = "org.eclipse.camf.core.model.category.services"; //$NON-NLS-1$
  
   /**
-   * Unique ID for the default job services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default job services category as defined by the CAMF core plug-in.
    */
   public static final String ID_DEPLOYMENT_SERVICES = "org.eclipse.camf.core.model.category.services.deployment"; //$NON-NLS-1$
   
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.camf.infosystem.model.edit/META-INF/MANIFEST.MF
index 2118375..4469a03 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/META-INF/MANIFEST.MF
@@ -11,5 +11,7 @@
 Export-Package: org.eclipse.camf.infosystem.model.base.provider
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.camf.infosystem.model;visibility:=reexport,
- org.eclipse.emf.edit;visibility:=reexport
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.jface,
+ org.eclipse.ui.workbench
 Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_Flavors.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_Flavors.gif
new file mode 100644
index 0000000..c213999
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_Flavors.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_VirtualMachineImageFlavor.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_VirtualMachineImageFlavor.gif
new file mode 100644
index 0000000..2e8ec2d
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_VirtualMachineImageFlavor.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateFlavors_flavors_VirtualMachineImageFlavor.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateFlavors_flavors_VirtualMachineImageFlavor.gif
new file mode 100644
index 0000000..961acc5
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateFlavors_flavors_VirtualMachineImageFlavor.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateGroups_securityGroups_SecurityGroup.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateGroups_securityGroups_SecurityGroup.gif
new file mode 100644
index 0000000..842360a
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateGroups_securityGroups_SecurityGroup.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateKeys_keypairs_KeyPair.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateKeys_keypairs_KeyPair.gif
new file mode 100644
index 0000000..5a655f5
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateKeys_keypairs_KeyPair.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_groups_Groups.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_groups_Groups.gif
new file mode 100644
index 0000000..ffad5c5
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_groups_Groups.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_Keys.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_Keys.gif
new file mode 100644
index 0000000..3677024
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_Keys.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Flavors.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Flavors.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Flavors.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Groups.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Groups.gif
new file mode 100644
index 0000000..203bb1a
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Groups.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Images.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Images.gif
index 35ef84e..5215457 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Images.gif
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Images.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Keys.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Keys.gif
new file mode 100644
index 0000000..e3964e7
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Keys.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Networks.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Networks.gif
index c414fe9..2b5e3aa 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Networks.gif
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Networks.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Security.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Security.gif
index 134551b..a911183 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Security.gif
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Security.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/plugin.properties b/plugins/org.eclipse.camf.infosystem.model.edit/plugin.properties
index 4a3cab1..0bbd71f 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/plugin.properties
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/plugin.properties
@@ -105,3 +105,12 @@
 _UI_SecurityGroup_uID_feature = UID
 _UI_SecurityGroup_name_feature = Name
 _UI_SecurityGroup_description_feature = Description
+_UI_Keys_type = Keys
+_UI_Groups_type = Groups
+_UI_Security_groups_feature = Groups
+_UI_Keys_keypairs_feature = Keypairs
+_UI_Groups_securityGroups_feature = Security Groups
+_UI_CloudProvider_type_feature = Type
+_UI_CloudProvider_flavors_feature = Flavors
+_UI_Flavors_type = Flavors
+_UI_Flavors_flavors_feature = Flavors
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/CloudProviderItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/CloudProviderItemProvider.java
index 5b72629..4f8bbd7 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/CloudProviderItemProvider.java
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/CloudProviderItemProvider.java
@@ -9,12 +9,14 @@
 import org.eclipse.camf.infosystem.model.base.CloudProvider;
 import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
 import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
-
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
@@ -26,6 +28,9 @@
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.CloudProvider} object.
@@ -67,6 +72,7 @@
       super.getPropertyDescriptors(object);
 
       addNamePropertyDescriptor(object);
+      addTypePropertyDescriptor(object);
     }
     return itemPropertyDescriptors;
   }
@@ -95,6 +101,29 @@
   }
 
   /**
+   * This adds a property descriptor for the Type feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addTypePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_CloudProvider_type_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_CloudProvider_type_feature", "_UI_CloudProvider_type"),
+         InfoSystemPackage.Literals.CLOUD_PROVIDER__TYPE,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
    * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
    * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
    * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
@@ -111,6 +140,7 @@
       childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__IMAGES);
       childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__NETWORKS);
       childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__SECURITY);
+      childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__FLAVORS);
     }
     return childrenFeatures;
   }
@@ -133,12 +163,34 @@
    * This returns CloudProvider.gif.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @generated
+   * @generated NOT
    */
   @Override
   public Object getImage(Object object)
   {
-    return overlayImage(object, getResourceLocator().getImage("full/obj16/CloudProvider"));
+    IExtensionRegistry registry = Platform.getExtensionRegistry();
+    IExtensionPoint extensionPoint = registry.getExtensionPoint( "org.eclipse.camf.ui.cloudProviderIcon" );
+    if (extensionPoint != null) {
+      IExtension[] extensions = extensionPoint.getExtensions();
+      for( IExtension extension : extensions ) {
+        IConfigurationElement[] elements = extension.getConfigurationElements();
+        for( IConfigurationElement element : elements ) {
+          if( element.getAttribute( "type" ).equals( ( (CloudProvider) object).getType() ) ) {
+            String location = element.getAttribute( "location" );
+            Image icon = null;
+            ImageDescriptor iconDesc = null;
+            if( location != null ) {
+              String pluginId = element.getContributor().getName();
+              iconDesc = AbstractUIPlugin.imageDescriptorFromPlugin( pluginId, location );
+              return iconDesc;
+            }
+          }
+        }
+      }
+      return overlayImage(object, getResourceLocator().getImage("full/obj16/CloudProvider"));
+    } else {
+      return overlayImage(object, getResourceLocator().getImage("full/obj16/CloudProvider"));      
+    }
   }
 
   /**
@@ -172,11 +224,13 @@
     switch (notification.getFeatureID(CloudProvider.class))
     {
       case InfoSystemPackage.CLOUD_PROVIDER__NAME:
+      case InfoSystemPackage.CLOUD_PROVIDER__TYPE:
         fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
         return;
       case InfoSystemPackage.CLOUD_PROVIDER__IMAGES:
       case InfoSystemPackage.CLOUD_PROVIDER__NETWORKS:
       case InfoSystemPackage.CLOUD_PROVIDER__SECURITY:
+      case InfoSystemPackage.CLOUD_PROVIDER__FLAVORS:
         fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
         return;
     }
@@ -209,6 +263,11 @@
       (createChildParameter
         (InfoSystemPackage.Literals.CLOUD_PROVIDER__SECURITY,
          InfoSystemFactory.eINSTANCE.createSecurity()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.CLOUD_PROVIDER__FLAVORS,
+         InfoSystemFactory.eINSTANCE.createFlavors()));
   }
 
   /**
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/FlavorsItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/FlavorsItemProvider.java
new file mode 100644
index 0000000..50db7c2
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/FlavorsItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.Flavors;
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Flavors} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlavorsItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public FlavorsItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.FLAVORS__FLAVORS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Flavors.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Flavors"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Flavors_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Flavors.class))
+    {
+      case InfoSystemPackage.FLAVORS__FLAVORS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.FLAVORS__FLAVORS,
+         InfoSystemFactory.eINSTANCE.createVirtualMachineImageFlavor()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/GroupsItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/GroupsItemProvider.java
new file mode 100644
index 0000000..6732868
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/GroupsItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.Groups;
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Groups} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GroupsItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public GroupsItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.GROUPS__SECURITY_GROUPS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Groups.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Groups"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Groups_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Groups.class))
+    {
+      case InfoSystemPackage.GROUPS__SECURITY_GROUPS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.GROUPS__SECURITY_GROUPS,
+         InfoSystemFactory.eINSTANCE.createSecurityGroup()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemItemProviderAdapterFactory.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemItemProviderAdapterFactory.java
index 4573827..73e30fb 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemItemProviderAdapterFactory.java
@@ -499,6 +499,81 @@
   }
 
   /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Keys} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected KeysItemProvider keysItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Keys}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createKeysAdapter()
+  {
+    if (keysItemProvider == null)
+    {
+      keysItemProvider = new KeysItemProvider(this);
+    }
+
+    return keysItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Groups} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected GroupsItemProvider groupsItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Groups}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createGroupsAdapter()
+  {
+    if (groupsItemProvider == null)
+    {
+      groupsItemProvider = new GroupsItemProvider(this);
+    }
+
+    return groupsItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Flavors} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected FlavorsItemProvider flavorsItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Flavors}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createFlavorsAdapter()
+  {
+    if (flavorsItemProvider == null)
+    {
+      flavorsItemProvider = new FlavorsItemProvider(this);
+    }
+
+    return flavorsItemProvider;
+  }
+
+  /**
    * This returns the root adapter factory that contains this factory.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -626,6 +701,9 @@
     if (imagesItemProvider != null) imagesItemProvider.dispose();
     if (networksItemProvider != null) networksItemProvider.dispose();
     if (securityItemProvider != null) securityItemProvider.dispose();
+    if (keysItemProvider != null) keysItemProvider.dispose();
+    if (groupsItemProvider != null) groupsItemProvider.dispose();
+    if (flavorsItemProvider != null) flavorsItemProvider.dispose();
   }
 
 }
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeyPairItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeyPairItemProvider.java
index 8358efd..d931f36 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeyPairItemProvider.java
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeyPairItemProvider.java
@@ -204,7 +204,7 @@
    * This returns the label text for the adapted class.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @generated
+   * @generated NOT
    */
   @Override
   public String getText(Object object)
@@ -212,7 +212,7 @@
     String label = ((KeyPair)object).getName();
     return label == null || label.length() == 0 ?
       getString("_UI_KeyPair_type") :
-      getString("_UI_KeyPair_type") + " " + label;
+      label;
   }
   
 
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeysItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeysItemProvider.java
new file mode 100644
index 0000000..0d31e6c
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeysItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.Keys;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Keys} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class KeysItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public KeysItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.KEYS__KEYPAIRS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Keys.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Keys"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Keys_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Keys.class))
+    {
+      case InfoSystemPackage.KEYS__KEYPAIRS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.KEYS__KEYPAIRS,
+         InfoSystemFactory.eINSTANCE.createKeyPair()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityGroupItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityGroupItemProvider.java
index 8e867df..d03248b 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityGroupItemProvider.java
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityGroupItemProvider.java
@@ -156,7 +156,7 @@
    * This returns the label text for the adapted class.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @generated
+   * @generated NOT
    */
   @Override
   public String getText(Object object)
@@ -164,7 +164,7 @@
     String label = ((SecurityGroup)object).getName();
     return label == null || label.length() == 0 ?
       getString("_UI_SecurityGroup_type") :
-      getString("_UI_SecurityGroup_type") + " " + label;
+      label;
   }
   
 
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityItemProvider.java
index c1dd343..8c05962 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityItemProvider.java
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityItemProvider.java
@@ -86,6 +86,7 @@
     {
       super.getChildrenFeatures(object);
       childrenFeatures.add(InfoSystemPackage.Literals.SECURITY__KEYS);
+      childrenFeatures.add(InfoSystemPackage.Literals.SECURITY__GROUPS);
     }
     return childrenFeatures;
   }
@@ -144,6 +145,7 @@
     switch (notification.getFeatureID(Security.class))
     {
       case InfoSystemPackage.SECURITY__KEYS:
+      case InfoSystemPackage.SECURITY__GROUPS:
         fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
         return;
     }
@@ -165,7 +167,12 @@
     newChildDescriptors.add
       (createChildParameter
         (InfoSystemPackage.Literals.SECURITY__KEYS,
-         InfoSystemFactory.eINSTANCE.createKeyPair()));
+         InfoSystemFactory.eINSTANCE.createKeys()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.SECURITY__GROUPS,
+         InfoSystemFactory.eINSTANCE.createGroups()));
   }
 
   /**
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageFlavorItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageFlavorItemProvider.java
index bef65dd..a8fa02d 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageFlavorItemProvider.java
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageFlavorItemProvider.java
@@ -212,7 +212,7 @@
     String label = ((VirtualMachineImageFlavor)object).getName();
     return label == null || label.length() == 0 ?
       getString("_UI_VirtualMachineImageFlavor_type") :
-      getString("_UI_VirtualMachineImageFlavor_type") + " " + label;
+      label;
   }
   
 
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualNetworkItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualNetworkItemProvider.java
index d7ae0ae..251ef34 100644
--- a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualNetworkItemProvider.java
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualNetworkItemProvider.java
@@ -180,7 +180,7 @@
    * This returns the label text for the adapted class.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @generated
+   * @generated NOT
    */
   @Override
   public String getText(Object object)
@@ -188,7 +188,7 @@
     String label = ((VirtualNetwork)object).getName();
     return label == null || label.length() == 0 ?
       getString("_UI_VirtualNetwork_type") :
-      getString("_UI_VirtualNetwork_type") + " " + label;
+      label;
   }
   
 
diff --git a/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore b/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore
index 00c67f1..3291415 100644
--- a/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore
+++ b/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore
@@ -251,6 +251,9 @@
         eType="#//Networks" containment="true"/>

     <eStructuralFeatures xsi:type="ecore:EReference" name="security" lowerBound="1"

         eType="#//Security" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="flavors" lowerBound="1"

+        eType="#//Flavors" containment="true"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="VirtualMachineImage">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

@@ -295,7 +298,7 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Deployment">

+  <eClassifiers xsi:type="ecore:EClass" name="Deployment">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="depID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentName" lowerBound="1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

@@ -327,7 +330,7 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" lowerBound="1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String" defaultValueLiteral=""/>

   </eClassifiers>

-    <eClassifiers xsi:type="ecore:EClass" name="Root">

+  <eClassifiers xsi:type="ecore:EClass" name="Root">

     <eStructuralFeatures xsi:type="ecore:EReference" name="cloudProviders" lowerBound="1"

         upperBound="-1" eType="#//CloudProvider" containment="true"/>

   </eClassifiers>

@@ -340,8 +343,21 @@
         eType="#//VirtualNetwork" containment="true"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Security">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="keys" lowerBound="1" upperBound="-1"

-        eType="#//KeyPair" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="keys" lowerBound="1" eType="#//Keys"

+        containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="groups" lowerBound="1"

+        eType="#//Groups" containment="true"/>

   </eClassifiers>

-

+  <eClassifiers xsi:type="ecore:EClass" name="Keys">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="keypairs" lowerBound="1"

+        upperBound="-1" eType="#//KeyPair" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Groups">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="securityGroups" lowerBound="1"

+        upperBound="-1" eType="#//SecurityGroup" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Flavors">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="flavors" lowerBound="1"

+        upperBound="-1" eType="#//VirtualMachineImageFlavor" containment="true"/>

+  </eClassifiers>

 </ecore:EPackage>

diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/CloudProvider.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/CloudProvider.java
index 9b3befc..ee46f9d 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/CloudProvider.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/CloudProvider.java
@@ -2,6 +2,7 @@
  */
 package org.eclipse.camf.infosystem.model.base;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -16,6 +17,8 @@
  *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getImages <em>Images</em>}</li>
  *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getNetworks <em>Networks</em>}</li>
  *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getSecurity <em>Security</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors <em>Flavors</em>}</li>
  * </ul>
  * </p>
  *
@@ -129,4 +132,56 @@
    */
   void setSecurity(Security value);
 
+  /**
+   * Returns the value of the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Type</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Type</em>' attribute.
+   * @see #setType(String)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Type()
+   * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getType();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getType <em>Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Type</em>' attribute.
+   * @see #getType()
+   * @generated
+   */
+  void setType(String value);
+
+  /**
+   * Returns the value of the '<em><b>Flavors</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Flavors</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Flavors</em>' containment reference.
+   * @see #setFlavors(Flavors)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Flavors()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  Flavors getFlavors();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors <em>Flavors</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Flavors</em>' containment reference.
+   * @see #getFlavors()
+   * @generated
+   */
+  void setFlavors(Flavors value);
+
 } // CloudProvider
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Flavors.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Flavors.java
new file mode 100644
index 0000000..61aa790
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Flavors.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Flavors</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.Flavors#getFlavors <em>Flavors</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getFlavors()
+ * @model
+ * @generated
+ */
+public interface Flavors extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Flavors</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Flavors</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Flavors</em>' containment reference list.
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getFlavors_Flavors()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  EList<VirtualMachineImageFlavor> getFlavors();
+
+} // Flavors
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Groups.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Groups.java
new file mode 100644
index 0000000..191bd3f
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Groups.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Groups</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.Groups#getSecurityGroups <em>Security Groups</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getGroups()
+ * @model
+ * @generated
+ */
+public interface Groups extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Security Groups</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.SecurityGroup}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Security Groups</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Security Groups</em>' containment reference list.
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getGroups_SecurityGroups()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  EList<SecurityGroup> getSecurityGroups();
+
+} // Groups
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java
index 5ffc861..2a4aee9 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java
@@ -172,6 +172,33 @@
   Security createSecurity();
 
     /**
+   * Returns a new object of class '<em>Keys</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Keys</em>'.
+   * @generated
+   */
+  Keys createKeys();
+
+    /**
+   * Returns a new object of class '<em>Groups</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Groups</em>'.
+   * @generated
+   */
+  Groups createGroups();
+
+    /**
+   * Returns a new object of class '<em>Flavors</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Flavors</em>'.
+   * @generated
+   */
+  Flavors createFlavors();
+
+    /**
    * Returns a new object of class '<em>Deployment</em>'.
    * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java
index 9f2ea9f..eff00ba 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java
@@ -550,13 +550,31 @@
   int CLOUD_PROVIDER__SECURITY = 3;
 
   /**
+   * The feature id for the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__TYPE = 4;
+
+  /**
+   * The feature id for the '<em><b>Flavors</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__FLAVORS = 5;
+
+  /**
    * The number of structural features of the '<em>Cloud Provider</em>' class.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    * @ordered
    */
-  int CLOUD_PROVIDER_FEATURE_COUNT = 4;
+  int CLOUD_PROVIDER_FEATURE_COUNT = 6;
 
   /**
    * The feature id for the '<em><b>UID</b></em>' attribute.
@@ -927,7 +945,7 @@
   int NETWORKS_FEATURE_COUNT = 1;
 
     /**
-   * The feature id for the '<em><b>Keys</b></em>' containment reference list.
+   * The feature id for the '<em><b>Keys</b></em>' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
@@ -936,15 +954,108 @@
   int SECURITY__KEYS = 0;
 
     /**
+   * The feature id for the '<em><b>Groups</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY__GROUPS = 1;
+
+    /**
    * The number of structural features of the '<em>Security</em>' class.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    * @ordered
    */
-  int SECURITY_FEATURE_COUNT = 1;
+  int SECURITY_FEATURE_COUNT = 2;
 
 		/**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.KeysImpl <em>Keys</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.KeysImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getKeys()
+   * @generated
+   */
+  int KEYS = 17;
+
+    /**
+   * The feature id for the '<em><b>Keypairs</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int KEYS__KEYPAIRS = 0;
+
+    /**
+   * The number of structural features of the '<em>Keys</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int KEYS_FEATURE_COUNT = 1;
+
+    /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.GroupsImpl <em>Groups</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.GroupsImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getGroups()
+   * @generated
+   */
+  int GROUPS = 18;
+
+    /**
+   * The feature id for the '<em><b>Security Groups</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int GROUPS__SECURITY_GROUPS = 0;
+
+    /**
+   * The number of structural features of the '<em>Groups</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int GROUPS_FEATURE_COUNT = 1;
+
+    /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.FlavorsImpl <em>Flavors</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.FlavorsImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getFlavors()
+   * @generated
+   */
+  int FLAVORS = 19;
+
+    /**
+   * The feature id for the '<em><b>Flavors</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FLAVORS__FLAVORS = 0;
+
+    /**
+   * The number of structural features of the '<em>Flavors</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FLAVORS_FEATURE_COUNT = 1;
+
+    /**
    * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageType <em>Virtual Machine Image Type</em>}' enum.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -952,7 +1063,7 @@
    * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageType()
    * @generated
    */
-  int VIRTUAL_MACHINE_IMAGE_TYPE = 17;
+  int VIRTUAL_MACHINE_IMAGE_TYPE = 20;
 
   /**
    * The meta object id for the '<em>Virtual Machine Image Type Object</em>' data type.
@@ -962,7 +1073,7 @@
    * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageTypeObject()
    * @generated
    */
-  int VIRTUAL_MACHINE_IMAGE_TYPE_OBJECT = 18;
+  int VIRTUAL_MACHINE_IMAGE_TYPE_OBJECT = 21;
 
 
   /**
@@ -1507,6 +1618,28 @@
   EReference getCloudProvider_Security();
 
   /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Type</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getType()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EAttribute getCloudProvider_Type();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors <em>Flavors</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Flavors</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EReference getCloudProvider_Flavors();
+
+  /**
    * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance <em>Virtual Instance</em>}'.
    * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1688,10 +1821,10 @@
   EClass getSecurity();
 
     /**
-   * Returns the meta object for the containment reference list '{@link org.eclipse.camf.infosystem.model.base.Security#getKeys <em>Keys</em>}'.
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.Security#getKeys <em>Keys</em>}'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return the meta object for the containment reference list '<em>Keys</em>'.
+   * @return the meta object for the containment reference '<em>Keys</em>'.
    * @see org.eclipse.camf.infosystem.model.base.Security#getKeys()
    * @see #getSecurity()
    * @generated
@@ -1699,6 +1832,80 @@
   EReference getSecurity_Keys();
 
     /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.Security#getGroups <em>Groups</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Groups</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Security#getGroups()
+   * @see #getSecurity()
+   * @generated
+   */
+  EReference getSecurity_Groups();
+
+    /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Keys <em>Keys</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Keys</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Keys
+   * @generated
+   */
+  EClass getKeys();
+
+    /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.camf.infosystem.model.base.Keys#getKeypairs <em>Keypairs</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Keypairs</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Keys#getKeypairs()
+   * @see #getKeys()
+   * @generated
+   */
+  EReference getKeys_Keypairs();
+
+    /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Groups <em>Groups</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Groups</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Groups
+   * @generated
+   */
+  EClass getGroups();
+
+    /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.camf.infosystem.model.base.Groups#getSecurityGroups <em>Security Groups</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Security Groups</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Groups#getSecurityGroups()
+   * @see #getGroups()
+   * @generated
+   */
+  EReference getGroups_SecurityGroups();
+
+    /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Flavors <em>Flavors</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Flavors</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Flavors
+   * @generated
+   */
+  EClass getFlavors();
+
+    /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.camf.infosystem.model.base.Flavors#getFlavors <em>Flavors</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Flavors</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Flavors#getFlavors()
+   * @see #getFlavors()
+   * @generated
+   */
+  EReference getFlavors_Flavors();
+
+    /**
    * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Deployment <em>Deployment</em>}'.
    * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2270,6 +2477,22 @@
     EReference CLOUD_PROVIDER__SECURITY = eINSTANCE.getCloudProvider_Security();
 
     /**
+     * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute CLOUD_PROVIDER__TYPE = eINSTANCE.getCloudProvider_Type();
+
+    /**
+     * The meta object literal for the '<em><b>Flavors</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference CLOUD_PROVIDER__FLAVORS = eINSTANCE.getCloudProvider_Flavors();
+
+    /**
      * The meta object literal for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualInstanceImpl <em>Virtual Instance</em>}' class.
      * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2418,7 +2641,7 @@
     EClass SECURITY = eINSTANCE.getSecurity();
 
         /**
-     * The meta object literal for the '<em><b>Keys</b></em>' containment reference list feature.
+     * The meta object literal for the '<em><b>Keys</b></em>' containment reference feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
@@ -2426,6 +2649,68 @@
     EReference SECURITY__KEYS = eINSTANCE.getSecurity_Keys();
 
         /**
+     * The meta object literal for the '<em><b>Groups</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference SECURITY__GROUPS = eINSTANCE.getSecurity_Groups();
+
+        /**
+     * The meta object literal for the '{@link org.eclipse.camf.infosystem.model.base.impl.KeysImpl <em>Keys</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.camf.infosystem.model.base.impl.KeysImpl
+     * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getKeys()
+     * @generated
+     */
+    EClass KEYS = eINSTANCE.getKeys();
+
+        /**
+     * The meta object literal for the '<em><b>Keypairs</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference KEYS__KEYPAIRS = eINSTANCE.getKeys_Keypairs();
+
+        /**
+     * The meta object literal for the '{@link org.eclipse.camf.infosystem.model.base.impl.GroupsImpl <em>Groups</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.camf.infosystem.model.base.impl.GroupsImpl
+     * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getGroups()
+     * @generated
+     */
+    EClass GROUPS = eINSTANCE.getGroups();
+
+        /**
+     * The meta object literal for the '<em><b>Security Groups</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference GROUPS__SECURITY_GROUPS = eINSTANCE.getGroups_SecurityGroups();
+
+        /**
+     * The meta object literal for the '{@link org.eclipse.camf.infosystem.model.base.impl.FlavorsImpl <em>Flavors</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.camf.infosystem.model.base.impl.FlavorsImpl
+     * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getFlavors()
+     * @generated
+     */
+    EClass FLAVORS = eINSTANCE.getFlavors();
+
+        /**
+     * The meta object literal for the '<em><b>Flavors</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference FLAVORS__FLAVORS = eINSTANCE.getFlavors_Flavors();
+
+        /**
      * The meta object literal for the '{@link org.eclipse.camf.infosystem.model.base.impl.DeploymentImpl <em>Deployment</em>}' class.
      * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Keys.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Keys.java
new file mode 100644
index 0000000..13db1b4
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Keys.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Keys</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.Keys#getKeypairs <em>Keypairs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getKeys()
+ * @model
+ * @generated
+ */
+public interface Keys extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Keypairs</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.KeyPair}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Keypairs</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Keypairs</em>' containment reference list.
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getKeys_Keypairs()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  EList<KeyPair> getKeypairs();
+
+} // Keys
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Security.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Security.java
index b0b3a4b..d683c8e 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Security.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Security.java
@@ -15,6 +15,7 @@
  * The following features are supported:
  * <ul>
  *   <li>{@link org.eclipse.camf.infosystem.model.base.Security#getKeys <em>Keys</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.Security#getGroups <em>Groups</em>}</li>
  * </ul>
  * </p>
  *
@@ -25,19 +26,55 @@
 public interface Security extends EObject
 {
   /**
-   * Returns the value of the '<em><b>Keys</b></em>' containment reference list.
-   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.KeyPair}.
+   * Returns the value of the '<em><b>Keys</b></em>' containment reference.
    * <!-- begin-user-doc -->
    * <p>
    * If the meaning of the '<em>Keys</em>' containment reference list isn't clear,
    * there really should be more of a description here...
    * </p>
    * <!-- end-user-doc -->
-   * @return the value of the '<em>Keys</em>' containment reference list.
+   * @return the value of the '<em>Keys</em>' containment reference.
+   * @see #setKeys(Keys)
    * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getSecurity_Keys()
    * @model containment="true" required="true"
    * @generated
    */
-  EList<KeyPair> getKeys();
+  Keys getKeys();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Security#getKeys <em>Keys</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Keys</em>' containment reference.
+   * @see #getKeys()
+   * @generated
+   */
+  void setKeys(Keys value);
+
+  /**
+   * Returns the value of the '<em><b>Groups</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Groups</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Groups</em>' containment reference.
+   * @see #setGroups(Groups)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getSecurity_Groups()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  Groups getGroups();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Security#getGroups <em>Groups</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Groups</em>' containment reference.
+   * @see #getGroups()
+   * @generated
+   */
+  void setGroups(Groups value);
 
 } // Security
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/CloudProviderImpl.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/CloudProviderImpl.java
index da24051..6b23355 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/CloudProviderImpl.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/CloudProviderImpl.java
@@ -2,20 +2,26 @@
  */
 package org.eclipse.camf.infosystem.model.base.impl;
 
+import java.util.Collection;
 import org.eclipse.camf.infosystem.model.base.CloudProvider;
+import org.eclipse.camf.infosystem.model.base.Flavors;
 import org.eclipse.camf.infosystem.model.base.Images;
 import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
 import org.eclipse.camf.infosystem.model.base.Networks;
 import org.eclipse.camf.infosystem.model.base.Security;
 
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 
 /**
  * <!-- begin-user-doc -->
@@ -28,6 +34,8 @@
  *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.CloudProviderImpl#getImages <em>Images</em>}</li>
  *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.CloudProviderImpl#getNetworks <em>Networks</em>}</li>
  *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.CloudProviderImpl#getSecurity <em>Security</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.CloudProviderImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.CloudProviderImpl#getFlavors <em>Flavors</em>}</li>
  * </ul>
  * </p>
  *
@@ -86,6 +94,36 @@
   protected Security security;
 
   /**
+   * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getType()
+   * @generated
+   * @ordered
+   */
+  protected static final String TYPE_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getType()
+   * @generated
+   * @ordered
+   */
+  protected String type = TYPE_EDEFAULT;
+
+  /**
+   * The cached value of the '{@link #getFlavors() <em>Flavors</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getFlavors()
+   * @generated
+   * @ordered
+   */
+  protected Flavors flavors;
+
+  /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
@@ -278,6 +316,77 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  public String getType()
+  {
+    return type;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setType(String newType)
+  {
+    String oldType = type;
+    type = newType;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, InfoSystemPackage.CLOUD_PROVIDER__TYPE, oldType, type));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Flavors getFlavors()
+  {
+    return flavors;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetFlavors(Flavors newFlavors, NotificationChain msgs)
+  {
+    Flavors oldFlavors = flavors;
+    flavors = newFlavors;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, InfoSystemPackage.CLOUD_PROVIDER__FLAVORS, oldFlavors, newFlavors);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setFlavors(Flavors newFlavors)
+  {
+    if (newFlavors != flavors)
+    {
+      NotificationChain msgs = null;
+      if (flavors != null)
+        msgs = ((InternalEObject)flavors).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - InfoSystemPackage.CLOUD_PROVIDER__FLAVORS, null, msgs);
+      if (newFlavors != null)
+        msgs = ((InternalEObject)newFlavors).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - InfoSystemPackage.CLOUD_PROVIDER__FLAVORS, null, msgs);
+      msgs = basicSetFlavors(newFlavors, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, InfoSystemPackage.CLOUD_PROVIDER__FLAVORS, newFlavors, newFlavors));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
   @Override
   public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
   {
@@ -289,6 +398,8 @@
         return basicSetNetworks(null, msgs);
       case InfoSystemPackage.CLOUD_PROVIDER__SECURITY:
         return basicSetSecurity(null, msgs);
+      case InfoSystemPackage.CLOUD_PROVIDER__FLAVORS:
+        return basicSetFlavors(null, msgs);
     }
     return super.eInverseRemove(otherEnd, featureID, msgs);
   }
@@ -311,6 +422,10 @@
         return getNetworks();
       case InfoSystemPackage.CLOUD_PROVIDER__SECURITY:
         return getSecurity();
+      case InfoSystemPackage.CLOUD_PROVIDER__TYPE:
+        return getType();
+      case InfoSystemPackage.CLOUD_PROVIDER__FLAVORS:
+        return getFlavors();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -320,6 +435,7 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  @SuppressWarnings("unchecked")
   @Override
   public void eSet(int featureID, Object newValue)
   {
@@ -337,6 +453,12 @@
       case InfoSystemPackage.CLOUD_PROVIDER__SECURITY:
         setSecurity((Security)newValue);
         return;
+      case InfoSystemPackage.CLOUD_PROVIDER__TYPE:
+        setType((String)newValue);
+        return;
+      case InfoSystemPackage.CLOUD_PROVIDER__FLAVORS:
+        setFlavors((Flavors)newValue);
+        return;
     }
     super.eSet(featureID, newValue);
   }
@@ -363,6 +485,12 @@
       case InfoSystemPackage.CLOUD_PROVIDER__SECURITY:
         setSecurity((Security)null);
         return;
+      case InfoSystemPackage.CLOUD_PROVIDER__TYPE:
+        setType(TYPE_EDEFAULT);
+        return;
+      case InfoSystemPackage.CLOUD_PROVIDER__FLAVORS:
+        setFlavors((Flavors)null);
+        return;
     }
     super.eUnset(featureID);
   }
@@ -385,6 +513,10 @@
         return networks != null;
       case InfoSystemPackage.CLOUD_PROVIDER__SECURITY:
         return security != null;
+      case InfoSystemPackage.CLOUD_PROVIDER__TYPE:
+        return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+      case InfoSystemPackage.CLOUD_PROVIDER__FLAVORS:
+        return flavors != null;
     }
     return super.eIsSet(featureID);
   }
@@ -402,6 +534,8 @@
     StringBuffer result = new StringBuffer(super.toString());
     result.append(" (Name: ");
     result.append(name);
+    result.append(", type: ");
+    result.append(type);
     result.append(')');
     return result.toString();
   }
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/FlavorsImpl.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/FlavorsImpl.java
new file mode 100644
index 0000000..c93ad88
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/FlavorsImpl.java
@@ -0,0 +1,167 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.impl;
+
+import java.util.Collection;
+
+import org.eclipse.camf.infosystem.model.base.Flavors;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Flavors</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.FlavorsImpl#getFlavors <em>Flavors</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FlavorsImpl extends EObjectImpl implements Flavors
+{
+  /**
+   * The cached value of the '{@link #getFlavors() <em>Flavors</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getFlavors()
+   * @generated
+   * @ordered
+   */
+  protected EList<VirtualMachineImageFlavor> flavors;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected FlavorsImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return InfoSystemPackage.Literals.FLAVORS;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<VirtualMachineImageFlavor> getFlavors()
+  {
+    if (flavors == null)
+    {
+      flavors = new EObjectContainmentEList<VirtualMachineImageFlavor>(VirtualMachineImageFlavor.class, this, InfoSystemPackage.FLAVORS__FLAVORS);
+    }
+    return flavors;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.FLAVORS__FLAVORS:
+        return ((InternalEList<?>)getFlavors()).basicRemove(otherEnd, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.FLAVORS__FLAVORS:
+        return getFlavors();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @SuppressWarnings("unchecked")
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.FLAVORS__FLAVORS:
+        getFlavors().clear();
+        getFlavors().addAll((Collection<? extends VirtualMachineImageFlavor>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.FLAVORS__FLAVORS:
+        getFlavors().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.FLAVORS__FLAVORS:
+        return flavors != null && !flavors.isEmpty();
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //FlavorsImpl
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/GroupsImpl.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/GroupsImpl.java
new file mode 100644
index 0000000..d5f284b
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/GroupsImpl.java
@@ -0,0 +1,167 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.impl;
+
+import java.util.Collection;
+
+import org.eclipse.camf.infosystem.model.base.Groups;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.SecurityGroup;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Groups</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.GroupsImpl#getSecurityGroups <em>Security Groups</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class GroupsImpl extends EObjectImpl implements Groups
+{
+  /**
+   * The cached value of the '{@link #getSecurityGroups() <em>Security Groups</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSecurityGroups()
+   * @generated
+   * @ordered
+   */
+  protected EList<SecurityGroup> securityGroups;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected GroupsImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return InfoSystemPackage.Literals.GROUPS;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<SecurityGroup> getSecurityGroups()
+  {
+    if (securityGroups == null)
+    {
+      securityGroups = new EObjectContainmentEList<SecurityGroup>(SecurityGroup.class, this, InfoSystemPackage.GROUPS__SECURITY_GROUPS);
+    }
+    return securityGroups;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.GROUPS__SECURITY_GROUPS:
+        return ((InternalEList<?>)getSecurityGroups()).basicRemove(otherEnd, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.GROUPS__SECURITY_GROUPS:
+        return getSecurityGroups();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @SuppressWarnings("unchecked")
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.GROUPS__SECURITY_GROUPS:
+        getSecurityGroups().clear();
+        getSecurityGroups().addAll((Collection<? extends SecurityGroup>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.GROUPS__SECURITY_GROUPS:
+        getSecurityGroups().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.GROUPS__SECURITY_GROUPS:
+        return securityGroups != null && !securityGroups.isEmpty();
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //GroupsImpl
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemFactoryImpl.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemFactoryImpl.java
index d3aa060..8560d7c 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemFactoryImpl.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemFactoryImpl.java
@@ -93,6 +93,9 @@
       case InfoSystemPackage.IMAGES: return createImages();
       case InfoSystemPackage.NETWORKS: return createNetworks();
       case InfoSystemPackage.SECURITY: return createSecurity();
+      case InfoSystemPackage.KEYS: return createKeys();
+      case InfoSystemPackage.GROUPS: return createGroups();
+      case InfoSystemPackage.FLAVORS: return createFlavors();
       default:
         throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
     }
@@ -301,6 +304,39 @@
 
     /**
    * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Keys createKeys()
+  {
+    KeysImpl keys = new KeysImpl();
+    return keys;
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Groups createGroups()
+  {
+    GroupsImpl groups = new GroupsImpl();
+    return groups;
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Flavors createFlavors()
+  {
+    FlavorsImpl flavors = new FlavorsImpl();
+    return flavors;
+  }
+
+    /**
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
    * @generated
    */
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemPackageImpl.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemPackageImpl.java
index 4083ed7..59cf987 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemPackageImpl.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/InfoSystemPackageImpl.java
@@ -18,10 +18,13 @@
 
 import org.eclipse.camf.infosystem.model.base.CloudProvider;
 import org.eclipse.camf.infosystem.model.base.Deployment;
+import org.eclipse.camf.infosystem.model.base.Flavors;
+import org.eclipse.camf.infosystem.model.base.Groups;
 import org.eclipse.camf.infosystem.model.base.Images;
 import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
 import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
 import org.eclipse.camf.infosystem.model.base.KeyPair;
+import org.eclipse.camf.infosystem.model.base.Keys;
 import org.eclipse.camf.infosystem.model.base.Module;
 import org.eclipse.camf.infosystem.model.base.MonitoringProbe;
 import org.eclipse.camf.infosystem.model.base.Networks;
@@ -160,6 +163,27 @@
 
     /**
    * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass keysEClass = null;
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass groupsEClass = null;
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass flavorsEClass = null;
+
+    /**
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
    * @generated
    */
@@ -748,6 +772,26 @@
 
   /**
    * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getCloudProvider_Type()
+  {
+    return (EAttribute)cloudProviderEClass.getEStructuralFeatures().get(4);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getCloudProvider_Flavors()
+  {
+    return (EReference)cloudProviderEClass.getEStructuralFeatures().get(5);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
    * @generated
    */
@@ -918,6 +962,76 @@
 
     /**
    * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getSecurity_Groups()
+  {
+    return (EReference)securityEClass.getEStructuralFeatures().get(1);
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getKeys()
+  {
+    return keysEClass;
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getKeys_Keypairs()
+  {
+    return (EReference)keysEClass.getEStructuralFeatures().get(0);
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getGroups()
+  {
+    return groupsEClass;
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getGroups_SecurityGroups()
+  {
+    return (EReference)groupsEClass.getEStructuralFeatures().get(0);
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getFlavors()
+  {
+    return flavorsEClass;
+  }
+
+    /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getFlavors_Flavors()
+  {
+    return (EReference)flavorsEClass.getEStructuralFeatures().get(0);
+  }
+
+    /**
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
    * @generated
    */
@@ -1107,6 +1221,8 @@
     createEReference(cloudProviderEClass, CLOUD_PROVIDER__IMAGES);
     createEReference(cloudProviderEClass, CLOUD_PROVIDER__NETWORKS);
     createEReference(cloudProviderEClass, CLOUD_PROVIDER__SECURITY);
+    createEAttribute(cloudProviderEClass, CLOUD_PROVIDER__TYPE);
+    createEReference(cloudProviderEClass, CLOUD_PROVIDER__FLAVORS);
 
     virtualMachineImageEClass = createEClass(VIRTUAL_MACHINE_IMAGE);
     createEAttribute(virtualMachineImageEClass, VIRTUAL_MACHINE_IMAGE__UID);
@@ -1150,6 +1266,16 @@
 
     securityEClass = createEClass(SECURITY);
     createEReference(securityEClass, SECURITY__KEYS);
+    createEReference(securityEClass, SECURITY__GROUPS);
+
+    keysEClass = createEClass(KEYS);
+    createEReference(keysEClass, KEYS__KEYPAIRS);
+
+    groupsEClass = createEClass(GROUPS);
+    createEReference(groupsEClass, GROUPS__SECURITY_GROUPS);
+
+    flavorsEClass = createEClass(FLAVORS);
+    createEReference(flavorsEClass, FLAVORS__FLAVORS);
 
     // Create enums
     virtualMachineImageTypeEEnum = createEEnum(VIRTUAL_MACHINE_IMAGE_TYPE);
@@ -1243,6 +1369,8 @@
     initEReference(getCloudProvider_Images(), this.getImages(), null, "images", null, 1, 1, CloudProvider.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getCloudProvider_Networks(), this.getNetworks(), null, "networks", null, 1, 1, CloudProvider.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getCloudProvider_Security(), this.getSecurity(), null, "security", null, 1, 1, CloudProvider.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getCloudProvider_Type(), theXMLTypePackage.getString(), "type", null, 1, 1, CloudProvider.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getCloudProvider_Flavors(), this.getFlavors(), null, "flavors", null, 1, 1, CloudProvider.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     initEClass(virtualMachineImageEClass, VirtualMachineImage.class, "VirtualMachineImage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
     initEAttribute(getVirtualMachineImage_UID(), theXMLTypePackage.getString(), "uID", null, 1, 1, VirtualMachineImage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -1285,7 +1413,17 @@
     initEReference(getNetworks_Nets(), this.getVirtualNetwork(), null, "nets", null, 1, -1, Networks.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     initEClass(securityEClass, Security.class, "Security", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-    initEReference(getSecurity_Keys(), this.getKeyPair(), null, "keys", null, 1, -1, Security.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getSecurity_Keys(), this.getKeys(), null, "keys", null, 1, 1, Security.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getSecurity_Groups(), this.getGroups(), null, "groups", null, 1, 1, Security.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(keysEClass, Keys.class, "Keys", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getKeys_Keypairs(), this.getKeyPair(), null, "keypairs", null, 1, -1, Keys.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(groupsEClass, Groups.class, "Groups", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getGroups_SecurityGroups(), this.getSecurityGroup(), null, "securityGroups", null, 1, -1, Groups.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(flavorsEClass, Flavors.class, "Flavors", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getFlavors_Flavors(), this.getVirtualMachineImageFlavor(), null, "flavors", null, 1, -1, Flavors.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     // Initialize enums and add enum literals
     initEEnum(virtualMachineImageTypeEEnum, VirtualMachineImageType.class, "VirtualMachineImageType");
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/KeysImpl.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/KeysImpl.java
new file mode 100644
index 0000000..7d3b8a2
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/KeysImpl.java
@@ -0,0 +1,167 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.impl;
+
+import java.util.Collection;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.KeyPair;
+import org.eclipse.camf.infosystem.model.base.Keys;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Keys</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.KeysImpl#getKeypairs <em>Keypairs</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class KeysImpl extends EObjectImpl implements Keys
+{
+  /**
+   * The cached value of the '{@link #getKeypairs() <em>Keypairs</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getKeypairs()
+   * @generated
+   * @ordered
+   */
+  protected EList<KeyPair> keypairs;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected KeysImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return InfoSystemPackage.Literals.KEYS;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<KeyPair> getKeypairs()
+  {
+    if (keypairs == null)
+    {
+      keypairs = new EObjectContainmentEList<KeyPair>(KeyPair.class, this, InfoSystemPackage.KEYS__KEYPAIRS);
+    }
+    return keypairs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.KEYS__KEYPAIRS:
+        return ((InternalEList<?>)getKeypairs()).basicRemove(otherEnd, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.KEYS__KEYPAIRS:
+        return getKeypairs();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @SuppressWarnings("unchecked")
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.KEYS__KEYPAIRS:
+        getKeypairs().clear();
+        getKeypairs().addAll((Collection<? extends KeyPair>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.KEYS__KEYPAIRS:
+        getKeypairs().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case InfoSystemPackage.KEYS__KEYPAIRS:
+        return keypairs != null && !keypairs.isEmpty();
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //KeysImpl
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/SecurityImpl.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/SecurityImpl.java
index 706b2d7..84c4163 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/SecurityImpl.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/impl/SecurityImpl.java
@@ -4,10 +4,13 @@
 
 import java.util.Collection;
 
+import org.eclipse.camf.infosystem.model.base.Groups;
 import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
 import org.eclipse.camf.infosystem.model.base.KeyPair;
+import org.eclipse.camf.infosystem.model.base.Keys;
 import org.eclipse.camf.infosystem.model.base.Security;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
@@ -15,6 +18,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
@@ -28,6 +32,7 @@
  * The following features are implemented:
  * <ul>
  *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.SecurityImpl#getKeys <em>Keys</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.impl.SecurityImpl#getGroups <em>Groups</em>}</li>
  * </ul>
  * </p>
  *
@@ -36,14 +41,24 @@
 public class SecurityImpl extends EObjectImpl implements Security
 {
   /**
-   * The cached value of the '{@link #getKeys() <em>Keys</em>}' containment reference list.
+   * The cached value of the '{@link #getKeys() <em>Keys</em>}' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @see #getKeys()
    * @generated
    * @ordered
    */
-  protected EList<KeyPair> keys;
+  protected Keys keys;
+
+  /**
+   * The cached value of the '{@link #getGroups() <em>Groups</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getGroups()
+   * @generated
+   * @ordered
+   */
+  protected Groups groups;
 
   /**
    * <!-- begin-user-doc -->
@@ -71,12 +86,8 @@
    * <!-- end-user-doc -->
    * @generated
    */
-  public EList<KeyPair> getKeys()
+  public Keys getKeys()
   {
-    if (keys == null)
-    {
-      keys = new EObjectContainmentEList<KeyPair>(KeyPair.class, this, InfoSystemPackage.SECURITY__KEYS);
-    }
     return keys;
   }
 
@@ -85,13 +96,101 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  public NotificationChain basicSetKeys(Keys newKeys, NotificationChain msgs)
+  {
+    Keys oldKeys = keys;
+    keys = newKeys;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, InfoSystemPackage.SECURITY__KEYS, oldKeys, newKeys);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setKeys(Keys newKeys)
+  {
+    if (newKeys != keys)
+    {
+      NotificationChain msgs = null;
+      if (keys != null)
+        msgs = ((InternalEObject)keys).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - InfoSystemPackage.SECURITY__KEYS, null, msgs);
+      if (newKeys != null)
+        msgs = ((InternalEObject)newKeys).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - InfoSystemPackage.SECURITY__KEYS, null, msgs);
+      msgs = basicSetKeys(newKeys, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, InfoSystemPackage.SECURITY__KEYS, newKeys, newKeys));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Groups getGroups()
+  {
+    return groups;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetGroups(Groups newGroups, NotificationChain msgs)
+  {
+    Groups oldGroups = groups;
+    groups = newGroups;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, InfoSystemPackage.SECURITY__GROUPS, oldGroups, newGroups);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setGroups(Groups newGroups)
+  {
+    if (newGroups != groups)
+    {
+      NotificationChain msgs = null;
+      if (groups != null)
+        msgs = ((InternalEObject)groups).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - InfoSystemPackage.SECURITY__GROUPS, null, msgs);
+      if (newGroups != null)
+        msgs = ((InternalEObject)newGroups).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - InfoSystemPackage.SECURITY__GROUPS, null, msgs);
+      msgs = basicSetGroups(newGroups, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, InfoSystemPackage.SECURITY__GROUPS, newGroups, newGroups));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
   @Override
   public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
   {
     switch (featureID)
     {
       case InfoSystemPackage.SECURITY__KEYS:
-        return ((InternalEList<?>)getKeys()).basicRemove(otherEnd, msgs);
+        return basicSetKeys(null, msgs);
+      case InfoSystemPackage.SECURITY__GROUPS:
+        return basicSetGroups(null, msgs);
     }
     return super.eInverseRemove(otherEnd, featureID, msgs);
   }
@@ -108,6 +207,8 @@
     {
       case InfoSystemPackage.SECURITY__KEYS:
         return getKeys();
+      case InfoSystemPackage.SECURITY__GROUPS:
+        return getGroups();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -124,8 +225,10 @@
     switch (featureID)
     {
       case InfoSystemPackage.SECURITY__KEYS:
-        getKeys().clear();
-        getKeys().addAll((Collection<? extends KeyPair>)newValue);
+        setKeys((Keys)newValue);
+        return;
+      case InfoSystemPackage.SECURITY__GROUPS:
+        setGroups((Groups)newValue);
         return;
     }
     super.eSet(featureID, newValue);
@@ -142,7 +245,10 @@
     switch (featureID)
     {
       case InfoSystemPackage.SECURITY__KEYS:
-        getKeys().clear();
+        setKeys((Keys)null);
+        return;
+      case InfoSystemPackage.SECURITY__GROUPS:
+        setGroups((Groups)null);
         return;
     }
     super.eUnset(featureID);
@@ -159,7 +265,9 @@
     switch (featureID)
     {
       case InfoSystemPackage.SECURITY__KEYS:
-        return keys != null && !keys.isEmpty();
+        return keys != null;
+      case InfoSystemPackage.SECURITY__GROUPS:
+        return groups != null;
     }
     return super.eIsSet(featureID);
   }
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemAdapterFactory.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemAdapterFactory.java
index be8d984..7125fee 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemAdapterFactory.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemAdapterFactory.java
@@ -171,6 +171,21 @@
         return createSecurityAdapter();
       }
       @Override
+      public Adapter caseKeys(Keys object)
+      {
+        return createKeysAdapter();
+      }
+      @Override
+      public Adapter caseGroups(Groups object)
+      {
+        return createGroupsAdapter();
+      }
+      @Override
+      public Adapter caseFlavors(Flavors object)
+      {
+        return createFlavorsAdapter();
+      }
+      @Override
       public Adapter defaultCase(EObject object)
       {
         return createEObjectAdapter();
@@ -416,6 +431,51 @@
   }
 
     /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.camf.infosystem.model.base.Keys <em>Keys</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.eclipse.camf.infosystem.model.base.Keys
+   * @generated
+   */
+  public Adapter createKeysAdapter()
+  {
+    return null;
+  }
+
+    /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.camf.infosystem.model.base.Groups <em>Groups</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.eclipse.camf.infosystem.model.base.Groups
+   * @generated
+   */
+  public Adapter createGroupsAdapter()
+  {
+    return null;
+  }
+
+    /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.camf.infosystem.model.base.Flavors <em>Flavors</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.eclipse.camf.infosystem.model.base.Flavors
+   * @generated
+   */
+  public Adapter createFlavorsAdapter()
+  {
+    return null;
+  }
+
+    /**
    * Creates a new adapter for an object of class '{@link org.eclipse.camf.infosystem.model.base.Deployment <em>Deployment</em>}'.
    * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemSwitch.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemSwitch.java
index a7c1d0a..cb2e7cc 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemSwitch.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/util/InfoSystemSwitch.java
@@ -203,6 +203,27 @@
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case InfoSystemPackage.KEYS:
+      {
+        Keys keys = (Keys)theEObject;
+        T result = caseKeys(keys);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case InfoSystemPackage.GROUPS:
+      {
+        Groups groups = (Groups)theEObject;
+        T result = caseGroups(groups);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case InfoSystemPackage.FLAVORS:
+      {
+        Flavors flavors = (Flavors)theEObject;
+        T result = caseFlavors(flavors);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       default: return defaultCase(theEObject);
     }
   }
@@ -446,6 +467,54 @@
   }
 
     /**
+   * Returns the result of interpreting the object as an instance of '<em>Keys</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Keys</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseKeys(Keys object)
+  {
+    return null;
+  }
+
+    /**
+   * Returns the result of interpreting the object as an instance of '<em>Groups</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Groups</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseGroups(Groups object)
+  {
+    return null;
+  }
+
+    /**
+   * Returns the result of interpreting the object as an instance of '<em>Flavors</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Flavors</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseFlavors(Flavors object)
+  {
+    return null;
+  }
+
+    /**
    * Returns the result of interpreting the object as an instance of '<em>Deployment</em>'.
    * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/plugins/org.eclipse.camf.infosystem.ui/src/org/eclipse/camf/infosystem/ui/InfoSystemView.java b/plugins/org.eclipse.camf.infosystem.ui/src/org/eclipse/camf/infosystem/ui/InfoSystemView.java
index f145ce3..a265826 100644
--- a/plugins/org.eclipse.camf.infosystem.ui/src/org/eclipse/camf/infosystem/ui/InfoSystemView.java
+++ b/plugins/org.eclipse.camf.infosystem.ui/src/org/eclipse/camf/infosystem/ui/InfoSystemView.java
@@ -1,6 +1,14 @@
 package org.eclipse.camf.infosystem.ui;
 
+import org.eclipse.camf.core.model.CloudModel;
+import org.eclipse.camf.core.model.ICloudElement;
+import org.eclipse.camf.core.model.ICloudModelEvent;
+import org.eclipse.camf.core.model.ICloudModelListener;
+import org.eclipse.camf.core.model.ICloudProject;
+import org.eclipse.camf.core.model.ICloudProvider;
+import org.eclipse.camf.core.model.ICloudProviderProperties;
 import org.eclipse.camf.infosystem.InfoService;
+import org.eclipse.camf.infosystem.jobs.FetchJob;
 import org.eclipse.camf.infosystem.model.base.Root;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
@@ -23,13 +31,19 @@
 import org.eclipse.ui.part.ViewPart;
 
 
-public class InfoSystemView extends ViewPart implements ISelectionProvider {
+public class InfoSystemView extends ViewPart implements ISelectionProvider, ICloudModelListener {
   
   private TreeViewer treeViewer;
   private ComposedAdapterFactory composedAdapterFactory;
   private AdapterFactoryLabelProvider adapterFactoryLabelProvider;
   private AdapterFactoryContentProvider adapterFactoryContentProvider;
 
+
+   
+  public InfoSystemView() {
+    CloudModel.getRoot().addCloudModelListener( InfoSystemView.this );
+  }
+  
   @Override
   public void addSelectionChangedListener( ISelectionChangedListener listener )
   {
@@ -125,4 +139,27 @@
     }
     return composedAdapterFactory;
 }
+
+  @Override
+  public void modelChanged( ICloudModelEvent event ) {
+    int type = event.getType();    
+    switch ( type ) {
+      case ICloudModelEvent.ELEMENTS_ADDED:
+      case ICloudModelEvent.ELEMENTS_REMOVED:
+      case ICloudModelEvent.PROJECT_CLOSED:
+      case ICloudModelEvent.PROJECT_OPENED:
+
+        for ( ICloudElement cloudElement : event.getElements() ) {
+
+          if ( (cloudElement instanceof ICloudProject) || (cloudElement instanceof ICloudProviderProperties)){
+            FetchJob myFetchJob = FetchJob.getInstance(" Retrieving Information"); //$NON-NLS-1$
+            myFetchJob.schedule(); // Getting the information from the info services.
+            break;
+          }
+        }
+        break;
+      default:
+        break;
+    }
+  }    
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.camf.infosystem/src/org/eclipse/camf/infosystem/jobs/FetchJob.java b/plugins/org.eclipse.camf.infosystem/src/org/eclipse/camf/infosystem/jobs/FetchJob.java
index 1a67036..9318000 100644
--- a/plugins/org.eclipse.camf.infosystem/src/org/eclipse/camf/infosystem/jobs/FetchJob.java
+++ b/plugins/org.eclipse.camf.infosystem/src/org/eclipse/camf/infosystem/jobs/FetchJob.java
@@ -16,11 +16,11 @@
 
 import java.util.ArrayList;
 
-import org.eclipse.camf.core.model.CloudModel;
-import org.eclipse.camf.core.model.ICloudElement;
+import org.eclipse.camf.core.model.ICloudContainer;
 import org.eclipse.camf.core.model.ICloudInfoService;
-import org.eclipse.camf.core.model.ICloudProject;
-import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.camf.core.model.ICloudProvider;
+import org.eclipse.camf.core.model.ICloudResourceCategory;
+import org.eclipse.camf.core.model.impl.CloudResourceCategoryFactory;
 import org.eclipse.camf.infosystem.InfoServiceFactory;
 import org.eclipse.camf.infosystem.internal.Activator;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -63,24 +63,44 @@
 	    InfoServiceFactory myInfoServiceFactory = new InfoServiceFactory();
 	    infoServicesArray = myInfoServiceFactory.getAllExistingInfoService();
 	    
-	    // Get the number of projects. The number is used in the monitor.
-	    int gridProjectNumbers = 0;
-	    ICloudElement[] projectElements;
-	    try {
-	      projectElements = CloudModel.getRoot().getChildren( null );
-	      for (int i=0; projectElements != null && i<projectElements.length; i++)
-	      {
-	        ICloudProject igp = (ICloudProject)projectElements[i];
-	        if (igp != null && !igp.isHidden() && igp.getCloudProvider() != null)
-	        {
-	          gridProjectNumbers++;
-	        }
-	      }
-	    } catch ( ProblemException e ) {
-	      Activator.logException( e );
-	    }
+//	    // Get the number of projects. The number is used in the monitor.
+//	    int gridProjectNumbers = 0;
+//	    ICloudElement[] projectElements;
+//	    try {
+//	      projectElements = CloudModel.getRoot().getChildren( null );
+//	      for (int i=0; projectElements != null && i<projectElements.length; i++)
+//	      {
+//	        ICloudProject igp = (ICloudProject)projectElements[i];
+//	        if (igp != null && !igp.isHidden() && igp.getCloudProvider() != null)
+//	        {
+//	          gridProjectNumbers++;
+//	        }
+//	      }
+//	    } catch ( ProblemException e ) {
+//	      Activator.logException( e );
+//	    }
+//	    
+	    localMonitor.beginTask( "Retrieving information", infoServicesArray.size() * 10 ); //$NON-NLS-1$
 	    
-	    localMonitor.beginTask( "Retrieving information", gridProjectNumbers * 10 ); //$NON-NLS-1$
+	    // Get the information from the info systems to file the glue view.
+	    for (int i=0; infoServicesArray!= null && !localMonitor.isCanceled() && i<infoServicesArray.size() ; i++)
+	    {
+	      try {
+	        ICloudInfoService iCloudInfoService = infoServicesArray.get( i );
+	        if (iCloudInfoService != null) {
+	          ICloudResourceCategory category = CloudResourceCategoryFactory.getCategory(CloudResourceCategoryFactory.ID_ALL);
+	          ICloudContainer parent = iCloudInfoService.getParent();
+	          ICloudProvider provider = null;
+	          if (parent instanceof ICloudProvider) {
+	            provider = (ICloudProvider) parent;
+	          }
+	          iCloudInfoService.fetchResources( parent, provider , category, localMonitor );
+	        }            
+          } catch( Exception e ) {
+            Activator.logException( e );
+          }
+	      
+	    }
 	    
 	    localMonitor.done();
 	    Status status = new Status( IStatus.OK,
diff --git a/plugins/org.eclipse.camf.tosca.editor/icons/flavor.gif b/plugins/org.eclipse.camf.tosca.editor/icons/flavor.gif
new file mode 100644
index 0000000..7ff95d6
--- /dev/null
+++ b/plugins/org.eclipse.camf.tosca.editor/icons/flavor.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/ImageProvider.java b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/ImageProvider.java
index 216b14a..ba51773 100644
--- a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/ImageProvider.java
+++ b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/ImageProvider.java
@@ -41,6 +41,10 @@
    *  The image identifier for a Monitoring Probe.
    */
   public static final String IMG_MONITORING = PREFIX + "monitoring"; //$NON-NLS-1$
+  /**
+   *  The image identifier for a VM Flavor.
+   */
+  public static final String IMG_FLAVOR = PREFIX + "flavor"; //$NON-NLS-1$
 
   @Override
   protected void addAvailableImages() {
@@ -48,5 +52,6 @@
     addImageFilePath( IMG_EREFERENCE, "icons/ereference.gif" ); //$NON-NLS-1$
     addImageFilePath( IMG_EREFERENCE2, "icons/ereference2.gif" ); //$NON-NLS-1$
     addImageFilePath( IMG_MONITORING, "icons/monitoring.png" ); //$NON-NLS-1$
+    addImageFilePath( IMG_FLAVOR, "icons/flavor.gif" ); //$NON-NLS-1$
   }
 }
diff --git a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaFeatureProvider.java b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaFeatureProvider.java
index 1c89303..9f07b53 100644
--- a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaFeatureProvider.java
+++ b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaFeatureProvider.java
@@ -22,6 +22,9 @@
 import org.eclipse.camf.infosystem.model.base.KeyPair;

 import org.eclipse.camf.infosystem.model.base.ResizingAction;

 import org.eclipse.camf.infosystem.model.base.VirtualMachineImage;

+import org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor;

+import org.eclipse.camf.infosystem.model.base.VirtualNetwork;

+import org.eclipse.camf.tosca.PropertiesType;

 import org.eclipse.camf.tosca.TDeploymentArtifact;

 import org.eclipse.camf.tosca.TNodeTemplate;

 import org.eclipse.camf.tosca.TRelationshipTemplate;

@@ -29,6 +32,7 @@
 import org.eclipse.camf.tosca.ToscaFactory;

 import org.eclipse.camf.tosca.editor.features.AddApplicationComponentFeature;

 import org.eclipse.camf.tosca.editor.features.AddDirectedRelationFeature;

+import org.eclipse.camf.tosca.editor.features.AddFlavorFeature;

 import org.eclipse.camf.tosca.editor.features.AddGroupFeature;

 import org.eclipse.camf.tosca.editor.features.AddKeyPairFeature;

 import org.eclipse.camf.tosca.editor.features.AddMonitorProbeFeature;

@@ -40,6 +44,7 @@
 import org.eclipse.camf.tosca.editor.features.AddVirtualMachineFeature;

 import org.eclipse.camf.tosca.editor.features.CreateApplicationComponentFeature;

 import org.eclipse.camf.tosca.editor.features.CreateDirectedRelationFeature;

+import org.eclipse.camf.tosca.editor.features.CreateFlavorFeature;

 import org.eclipse.camf.tosca.editor.features.CreateGroupFeature;

 import org.eclipse.camf.tosca.editor.features.CreateKeyPairFeature;

 import org.eclipse.camf.tosca.editor.features.CreateMonitorProbeFeature;

@@ -64,6 +69,7 @@
 import org.eclipse.camf.tosca.editor.features.ResizeCompositeComponentFeature;

 import org.eclipse.camf.tosca.editor.features.UpdateApplicationComponentFeature;

 import org.eclipse.camf.tosca.editor.features.UpdateCompositeComponentFeature;

+import org.eclipse.camf.tosca.elasticity.NodePropertiesType;

 import org.eclipse.graphiti.dt.IDiagramTypeProvider;

 import org.eclipse.graphiti.features.IAddFeature;

 import org.eclipse.graphiti.features.ICreateConnectionFeature;

@@ -129,8 +135,12 @@
       return new AddVirtualMachineFeature( this );

     } else if (context.getNewObject() instanceof KeyPair ){

       return new AddKeyPairFeature( this );

+    } else if (context.getNewObject() instanceof VirtualNetwork ){

+      return new AddNetworkFeature( this );

     } else if( context.getNewObject() instanceof ResizingAction ) {

       return new AddResizingActionFeature( this );

+    } else if( context.getNewObject() instanceof VirtualMachineImageFlavor ) {

+      return new AddFlavorFeature( this );

     } 

     // its a substitutional Service Template

     else if( context.getNewObject() instanceof TServiceTemplate

@@ -200,6 +210,7 @@
       new CreateNetworkFeature( this ),

       new CreateSoftwareDependencyFeature( this ),

       new CreateMonitorProbeFeature( this ),

+      new CreateFlavorFeature(this),

       new CreateServiceTemplateFeature( this ),

       new CreateResizeActionFeature( this ),

       new CreateUserApplicationFeature( this ),

diff --git a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaToolBehaviorProvider.java b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaToolBehaviorProvider.java
index a18e15c..72ee74c 100644
--- a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaToolBehaviorProvider.java
+++ b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/diagram/ToscaToolBehaviorProvider.java
@@ -225,15 +225,15 @@
     }

     addApplicationComponentsCompartment( ret );

     

-    this.mockUpInfoSystemInstance = MockUpInfoSystem.getInstance();

-    addVMImageCompartment( ret );

-    addNetworkCompartment( ret );

-    addMonitorProbeCompartment( ret );

-    addResizeActionsCompartment( ret );

-    

-    addUserAppsCompartment( ret );

-    addKeyPairCompartment( ret );

-    addDeployScriptCompartment( ret );

+//    this.mockUpInfoSystemInstance = MockUpInfoSystem.getInstance();

+//    addVMImageCompartment( ret );

+//    addNetworkCompartment( ret );

+//    addMonitorProbeCompartment( ret );

+//    addResizeActionsCompartment( ret );

+//    

+//    addUserAppsCompartment( ret );

+//    addKeyPairCompartment( ret );

+//    addDeployScriptCompartment( ret );

 

     return ret.toArray( new IPaletteCompartmentEntry[ ret.size() ] );

   }

diff --git a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/AddFlavorFeature.java b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/AddFlavorFeature.java
new file mode 100644
index 0000000..50ef3c9
--- /dev/null
+++ b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/AddFlavorFeature.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Laboratory for Internet Computing, University of Cyprus.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ *   Stalo Sofokleous - initial API and implementation
+ *   Nicholas Loulloudes - API and implementation extensions
+ *   
+ *******************************************************************************/
+package org.eclipse.camf.tosca.editor.features;
+
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor;
+import org.eclipse.camf.tosca.PropertiesType;
+import org.eclipse.camf.tosca.TDeploymentArtifact;
+import org.eclipse.camf.tosca.ToscaFactory;
+import org.eclipse.camf.tosca.editor.ImageProvider;
+import org.eclipse.camf.tosca.editor.StyleUtil;
+import org.eclipse.camf.tosca.editor.diagram.ToscaFeatureProvider;
+import org.eclipse.camf.tosca.elasticity.NodePropertiesType;
+import org.eclipse.camf.tosca.elasticity.Tosca_Elasticity_ExtensionsFactory;
+import org.eclipse.camf.tosca.elasticity.Tosca_Elasticity_ExtensionsPackage;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.ecore.util.FeatureMap.Entry;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.IContext;
+import org.eclipse.graphiti.features.context.impl.CreateContext;
+import org.eclipse.graphiti.features.impl.AbstractFeature;
+import org.eclipse.graphiti.mm.algorithms.Image;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeCreateService;
+
+public class AddFlavorFeature extends AbstractFeature
+  implements IAddFeature
+{
+
+  public AddFlavorFeature( final IFeatureProvider fp ) {
+    super( fp );
+  }
+
+  // Checks whether a Flavor can be added to the target object
+  public boolean canAdd( final IAddContext context ) {
+    boolean result = false;
+    boolean isDiagramInstance = context.getTargetContainer() instanceof Diagram
+                                                                               ? true
+                                                                               : false;
+    
+    boolean flavor = false;
+    flavor = context.getNewObject() instanceof TDeploymentArtifact && ((TDeploymentArtifact)context.getNewObject()).getArtifactType().toString().compareTo( "MonitoringProbe" )==0;
+    
+    if( context.getNewObject() instanceof VirtualMachineImageFlavor ) {
+      flavor = true;
+    }
+    
+    if( flavor && !isDiagramInstance )
+    {
+      result = true;
+    }
+    
+    return result;
+  }
+
+  // No figure for Monitoring Probe required
+  @Override
+  public PictogramElement add( final IAddContext context ) {
+    
+    ContainerShape targetDiagram = context.getTargetContainer();
+    
+    // Check if monitoring icon already exists
+    Object[] targetDiagrams = targetDiagram.getChildren().toArray();
+    for( int i = 0; i < targetDiagrams.length; i++ ) {
+      if( ( ( Shape )targetDiagrams[ i ] ).getGraphicsAlgorithm() instanceof Image )
+        return null;
+    }
+  
+    // Add flavor icon into the target application component
+    IPeCreateService peCreateService = Graphiti.getPeCreateService();
+    ContainerShape containerShapeImg = peCreateService.createContainerShape( targetDiagram,
+                                                                          true );    
+    IGaService gaService = Graphiti.getGaService();
+    String imageId = ImageProvider.IMG_FLAVOR;
+    Image image = gaService.createImage( containerShapeImg, imageId );
+    gaService.setLocationAndSize( image, StyleUtil.APP_COMPONENT_WIDTH-15, 5, 10, 10 );
+    
+    
+
+    VirtualMachineImageFlavor vmf = null;
+    NodePropertiesType nodeProperties = null;
+    if( context.getNewObject() instanceof VirtualMachineImageFlavor ) {
+      vmf = (VirtualMachineImageFlavor) context.getNewObject();
+      nodeProperties = Tosca_Elasticity_ExtensionsFactory.eINSTANCE.createNodePropertiesType();
+      nodeProperties.setFlavor( vmf.getName() );
+    }
+    
+    // Call the Create User Application Feature to create a deployment
+    // artifact for the deployment script and add it to the artifacts
+    // list
+    CreateContext createContext = new CreateContext();
+    createContext.setTargetContainer(context.getTargetContainer());
+    CreateFlavorFeature createKPFeature = new CreateFlavorFeature( new ToscaFeatureProvider( getDiagramBehavior().getDiagramContainer()
+      .getDiagramTypeProvider() ) );      
+    createKPFeature.setContextObject( nodeProperties );
+    if( createKPFeature.canCreate( createContext ) ) {
+      createKPFeature.create( createContext );
+    }
+    
+    containerShapeImg.setVisible( true );
+    
+    return null;
+  }
+
+  @Override
+  public boolean canExecute( final IContext context ) {
+    // TODO Auto-generated method stub
+    return false;
+  }
+
+  @Override
+  public void execute( final IContext context ) {
+    // TODO Auto-generated method stub
+  }
+}
diff --git a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/AddNetworkFeature.java b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/AddNetworkFeature.java
index e330222..d4382eb 100644
--- a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/AddNetworkFeature.java
+++ b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/AddNetworkFeature.java
@@ -16,10 +16,16 @@
  *******************************************************************************/
 package org.eclipse.camf.tosca.editor.features;
 
+import javax.xml.namespace.QName;
+
+import org.eclipse.camf.infosystem.model.base.VirtualNetwork;
 import org.eclipse.camf.tosca.TDeploymentArtifact;
+import org.eclipse.camf.tosca.ToscaFactory;
 import org.eclipse.camf.tosca.editor.StyleUtil;
+import org.eclipse.camf.tosca.editor.diagram.ToscaFeatureProvider;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.impl.CreateContext;
 import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;
 import org.eclipse.graphiti.mm.algorithms.Polyline;
 import org.eclipse.graphiti.mm.algorithms.RoundedRectangle;
@@ -49,7 +55,7 @@
     super( fp );
   }
 
-  // Checks whether a KeyPair can be added to the target object
+  // Checks whether a Network can be added to the target object
   @Override
   public boolean canAdd( final IAddContext context ) {
     boolean result = false;
@@ -62,15 +68,40 @@
         .toString()
         .compareTo( "Network" ) == 0 )
         result = true;
-    } 
+    } else if (context.getNewObject() instanceof VirtualNetwork) {
+      result = true;
+    }
     return result;
   }
 
-  // Adds a KeyPair figure to the target object
+  // Adds a Network figure to the target object
   @Override
   public PictogramElement add( final IAddContext context ) {
-    
-    TDeploymentArtifact addedClass = ( TDeploymentArtifact )context.getNewObject();
+        
+    TDeploymentArtifact addedArtifact;
+    VirtualNetwork vn = null;
+    if( context.getNewObject() instanceof VirtualNetwork ) {
+      vn = (VirtualNetwork) context.getNewObject();
+      addedArtifact = ToscaFactory.eINSTANCE.createTDeploymentArtifact();
+      addedArtifact.setName( vn.getUID() );
+      addedArtifact.setArtifactType( new QName( "Network" ) );
+      
+      // Call the Create User Application Feature to create a deployment
+      // artifact for the deployment script and add it to the artifacts
+      // list
+      CreateContext createContext = new CreateContext();
+      createContext.setTargetContainer(context.getTargetContainer());
+      CreateNetworkFeature createKPFeature = new CreateNetworkFeature( new ToscaFeatureProvider( getDiagramBehavior().getDiagramContainer()
+        .getDiagramTypeProvider() ) );      
+      createKPFeature.setContextObject( addedArtifact );
+      if( createKPFeature.canCreate( createContext ) ) {
+        createKPFeature.create( createContext );
+      }
+      
+    }
+      else {
+      addedArtifact = ( TDeploymentArtifact )context.getNewObject();
+    }
     
     ContainerShape targetDiagram = ( ContainerShape )context.getTargetContainer();
     // CONTAINER SHAPE WITH ROUNDED RECTANGLE
@@ -92,11 +123,11 @@
                                     StyleUtil.APP_COMPONENT_HEIGHT - 60,
                                     width,
                                     height );
-      if( addedClass.eResource() == null ) {
-        getDiagram().eResource().getContents().add( addedClass );
+      if( addedArtifact.eResource() == null ) {
+        getDiagram().eResource().getContents().add( addedArtifact );
       }
       // create link and wire it
-      link( containerShape, addedClass );
+      link( containerShape, addedArtifact );
     }
     // SHAPE WITH LINE
     {
@@ -114,14 +145,15 @@
       // create shape for text
       Shape shape = peCreateService.createShape( containerShape, false );
       // create and set text graphics algorithm
-      Text text = gaService.createText( shape, addedClass.getName() );
+      String name = vn != null ? vn.getName() : addedArtifact.getName();
+      Text text = gaService.createText( shape, name );
       text.setForeground( manageColor( E_CLASS_TEXT_FOREGROUND ) );
       text.setHorizontalAlignment( Orientation.ALIGNMENT_CENTER );
       // vertical alignment has as default value "center"
       text.setFont( gaService.manageDefaultFont( getDiagram(), false, true ) );
       gaService.setLocationAndSize( text, 0, 0, width, 20 );
       // create link and wire it
-      link( shape, addedClass );
+      link( shape, addedArtifact );
     }
     // call the layout feature
     layoutPictogramElement( containerShape );
diff --git a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/CreateFlavorFeature.java b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/CreateFlavorFeature.java
new file mode 100644
index 0000000..5069e97
--- /dev/null
+++ b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/CreateFlavorFeature.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Laboratory for Internet Computing, University of Cyprus.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ *   Stalo Sofokleous - initial API and implementation
+ *   Nicholas Loulloudes - API and implementation extensions
+ *   
+ *******************************************************************************/
+package org.eclipse.camf.tosca.editor.features;
+
+import org.eclipse.camf.tosca.PropertiesType;
+import org.eclipse.camf.tosca.TNodeTemplate;
+import org.eclipse.camf.tosca.ToscaFactory;
+import org.eclipse.camf.tosca.elasticity.NodePropertiesType;
+import org.eclipse.camf.tosca.elasticity.TNodeTemplateExtension;
+import org.eclipse.camf.tosca.elasticity.TServiceTemplateExtension;
+import org.eclipse.camf.tosca.elasticity.Tosca_Elasticity_ExtensionsPackage;
+import org.eclipse.emf.ecore.util.FeatureMap.Entry;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.ICreateContext;
+import org.eclipse.graphiti.features.impl.AbstractCreateFeature;
+
+public class CreateFlavorFeature extends AbstractCreateFeature {
+
+  private Object contextObject = null;
+
+  public CreateFlavorFeature( final IFeatureProvider fp ) {
+    // set name and description of the creation feature
+    super( fp, "Flavor", "Flavor" ); //$NON-NLS-1$ //$NON-NLS-2$
+  }
+
+  public void setContextObject( final Object obj ) {
+    this.contextObject = obj;
+  }
+
+  // Checks if user can create a monitoring probe object in the target
+  // business object
+  @Override
+  public boolean canCreate( final ICreateContext context ) {
+    Object parentBo = getFeatureProvider().getBusinessObjectForPictogramElement( context.getTargetContainer() );
+    if( parentBo instanceof TNodeTemplateExtension
+        || parentBo instanceof TServiceTemplateExtension )
+    {
+      return true;
+    }
+    return false;
+  }
+  
+  // Creates the business object for the Monitoring Probe
+  @Override
+  public Object[] create( final ICreateContext context ) {
+    if( this.contextObject == null )
+      return null;
+    
+    NodePropertiesType nodeProperties = ( NodePropertiesType ) this.contextObject;
+
+    Object parentObject = getFeatureProvider().getBusinessObjectForPictogramElement( context.getTargetContainer() );
+    
+    final TNodeTemplate tNode;
+    final PropertiesType properties;
+    
+    if( parentObject == null )
+      return null;
+    
+    if( parentObject instanceof TNodeTemplate ) {
+      tNode = ( TNodeTemplate ) parentObject;
+      
+      Entry e = null;
+      if( tNode.getProperties() == null ) {
+        // Set the Properties of the Policy Template
+        properties = ToscaFactory.eINSTANCE.createPropertiesType();
+        // Add the SYBL Policy to the FeatureMap of the Policy's Properties
+        // element
+        e = FeatureMapUtil.createEntry( Tosca_Elasticity_ExtensionsPackage.eINSTANCE.getDocumentRoot_NodeProperties(),
+                                        nodeProperties );
+      } else {
+        properties = tNode.getProperties();
+      }
+      properties.getAny().add( e );
+      
+      TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain( tNode );
+      editingDomain.getCommandStack()
+        .execute( new RecordingCommand( editingDomain ) {
+
+          @Override
+          protected void doExecute() {
+            tNode.setProperties( properties );
+          }
+        } );
+
+      
+      //addGraphicalRepresentation( context, vmi );
+      
+      /////////////////////////////////////////////
+      addGraphicalRepresentation( context, properties );
+      /////////////////////////////////////////////
+
+      // activate direct editing after object creation
+      getFeatureProvider().getDirectEditingInfo().setActive( true );
+    } else {
+      tNode = null;
+      properties = null;
+    }
+    
+    
+    // return newly created business object(s)
+    return new Object[]{
+      properties
+    };
+  }
+
+
+  
+
+}
diff --git a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/CreateKeyPairFeature.java b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/CreateKeyPairFeature.java
index d7c9c96..ed4d28f 100644
--- a/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/CreateKeyPairFeature.java
+++ b/plugins/org.eclipse.camf.tosca.editor/src/org/eclipse/camf/tosca/editor/features/CreateKeyPairFeature.java
@@ -46,14 +46,11 @@
   // business object
   @Override
   public boolean canCreate( final ICreateContext context ) {
-    System.out.println("can");
     if( context.getTargetContainer() instanceof Diagram ){
-      System.out.println( "not create");
       return false;
     }
     Object parentBo = getFeatureProvider().getBusinessObjectForPictogramElement( context.getTargetContainer() );
     if( parentBo instanceof TNodeTemplate ) {
-      System.out.println( "create");
       return true;
     }
     return false;
diff --git a/plugins/org.eclipse.camf.ui/plugin.xml b/plugins/org.eclipse.camf.ui/plugin.xml
index 0ebd842..1d7b138 100644
--- a/plugins/org.eclipse.camf.ui/plugin.xml
+++ b/plugins/org.eclipse.camf.ui/plugin.xml
@@ -4,6 +4,7 @@
    <extension-point id="propertiesFactory" name="propertiesFactory" schema="schema/PropertiesFactory.exsd"/>
    <extension-point id="authTokenUI" name="Authentication Token UI Contributions" schema="schema/authTokenUI.exsd"/>
    <extension-point id="newCloudProviderWizards" name="org.eclipse.camf.ui.newCloudProviderWizards" schema="schema/newCloudProviderWizards.exsd"/>
+   <extension-point id="cloudProviderIcon" name="org.eclipse.camf.ui.cloudProviderIcon" schema="schema/cloudProviderIcon.exsd"/>
    
 
    <extension
diff --git a/plugins/org.eclipse.camf.ui/schema/cloudProviderIcon.exsd b/plugins/org.eclipse.camf.ui/schema/cloudProviderIcon.exsd
new file mode 100644
index 0000000..4d9cdfa
--- /dev/null
+++ b/plugins/org.eclipse.camf.ui/schema/cloudProviderIcon.exsd
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.camf.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.camf.ui" id="cloudProviderIcon" name="org.eclipse.camf.ui.cloudProviderIcon"/>
+      </appinfo>
+      <documentation>
+         [Enter description of this extension point.]
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="icon" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="icon">
+      <complexType>
+         <attribute name="location" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="type" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
diff --git a/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/Extensions.java b/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/Extensions.java
index ce74c76..04d67c2 100644
--- a/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/Extensions.java
+++ b/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/Extensions.java
@@ -68,6 +68,11 @@
    */
   public static final String WIZARD_EXTENSION_EXECUTABLE = "class"; //$NON-NLS-1$
   
+  /**
+   * The ID of the wizard extension wizard element's executable.
+   */
+  public static final String WIZARD_EXTENSION_CLOUD_ICON = "cloudicon"; //$NON-NLS-1$
+  
   
   private static final String PROPERTIES_FACTORY_POINT = "org.eclipse.camf.ui.propertiesFactory";  //$NON-NLS-1$
   private static final String PROPERTIES_FACTORY_ELEMENT = "PropertiesFactory"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/wizards/NewDeploymentWizard.java b/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/wizards/NewDeploymentWizard.java
index 756ad1a..0ce80f1 100644
--- a/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/wizards/NewDeploymentWizard.java
+++ b/plugins/org.eclipse.camf.ui/src/org/eclipse/camf/ui/wizards/NewDeploymentWizard.java
@@ -92,7 +92,7 @@
 				  

 		          ICloudDeploymentService deployService = getDeploymentService();

 		          try {

-		            deployService.deployApplication( NewDeploymentWizard.this.deploymentFile.getTOSCAModel(), monitor );

+		            deployService.deployApplication( NewDeploymentWizard.this.deploymentFile, monitor );

 		          } catch( ProblemException e1 ) {

 		            e1.printStackTrace();

 		          }