diff --git a/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java b/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java
index c3735e2..11969d9 100644
--- a/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java
+++ b/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java
@@ -36,7 +36,7 @@
 

     Color color = Color.white;

     registry.register(new ManagedContainerDescriptor(), color, 0.8f);

-    registry.register(new MapEntryDescriptor(), color, 0.7f);

-    registry.register(new CollectionDescriptor(), color, 0.7f);

+    // registry.register(new MapEntryDescriptor(), color, 0.7f);

+    // registry.register(new CollectionDescriptor(), color, 0.7f);

   }

 }

diff --git a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java
index 74c3d2b..ad02766 100644
--- a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java
+++ b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java
@@ -85,6 +85,7 @@
   public void createPartControl(Composite parent)
   {
     world = new ThreeDeeWorld(parent);
+
     Frontend.INSTANCE.addListener(frontendListener);
 
     DescriptorView.INSTANCE.addListener(descriptorViewListener);
diff --git a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java
index a8bb620..b838939 100644
--- a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java
+++ b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java
@@ -284,7 +284,6 @@
     pickCanvas.setMode(PickTool.BOUNDS);

     canvas.addMouseListener(new MouseAdapter()

     {

-      @SuppressWarnings("unchecked")

       @Override

       public void mouseClicked(MouseEvent e)

       {

@@ -295,15 +294,41 @@
           Node node = result.getNode(PickResult.PRIMITIVE | PickResult.SHAPE3D);

           if (node != null)

           {

-            ThreeDeeNode<Element> threeDeeNode = ThreeDeeUtil.getThreeDeeNode(node);

-            Element element = threeDeeNode.getModel();

-            setSelection(new StructuredSelection(element));

+            int modifiers = e.getModifiers();

+            boolean alt = (modifiers & MouseEvent.ALT_MASK) != 0;

+            boolean ctl = (modifiers & MouseEvent.CTRL_MASK) != 0;

+            picked(node, alt, ctl);

             return;

           }

         }

 

         setSelection(StructuredSelection.EMPTY);

       }

+

+      private void picked(Node node, boolean alt, boolean ctl)

+      {

+        @SuppressWarnings("unchecked")

+        ThreeDeeNode<Element> threeDeeNode = ThreeDeeUtil.getThreeDeeNode(node);

+        Element element = threeDeeNode.getModel();

+

+        List<Element> elements = new ArrayList<Element>();

+        elements.add(element);

+        if (alt)

+        {

+          addChildren(element, elements);

+        }

+

+        setSelection(new StructuredSelection(elements));

+      }

+

+      private void addChildren(Element element, List<Element> elements)

+      {

+        for (Element child : element.getElements())

+        {

+          elements.add(child);

+          addChildren(child, elements);

+        }

+      }

     });

   }

 

diff --git a/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java b/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java
index e843496..26d2244 100644
--- a/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java
+++ b/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java
@@ -287,10 +287,10 @@
       if (object instanceof ElementDescriptor)
       {
         ElementDescriptor descriptor = (ElementDescriptor)object;
-        if (descriptor.isFolder())
-        {
-          return folderImage;
-        }
+        // if (descriptor.isFolder())
+        // {
+        // return folderImage;
+        // }
 
         Color color = descriptor.getColor().getValue();
         return ColorIcons.get(color);