diff --git "a/org.eclipse.emf.cdo.threedee.agent/ThreeDee Agent \050Server\051.launch" "b/org.eclipse.emf.cdo.threedee.agent/ThreeDee Agent \050Server\051.launch"
index 6e3e7ac..4bc10bf 100644
--- "a/org.eclipse.emf.cdo.threedee.agent/ThreeDee Agent \050Server\051.launch"
+++ "b/org.eclipse.emf.cdo.threedee.agent/ThreeDee Agent \050Server\051.launch"
@@ -6,7 +6,7 @@
 <booleanAttribute key="automaticAdd" value="false"/>

 <booleanAttribute key="automaticValidate" value="false"/>

 <stringAttribute key="bootstrap" value=""/>

-<stringAttribute key="checked" value="org.eclipse.emf.cdo.threedee.agent"/>

+<stringAttribute key="checked" value="[NONE]"/>

 <booleanAttribute key="clearConfig" value="true"/>

 <booleanAttribute key="clearws" value="false"/>

 <booleanAttribute key="clearwslog" value="false"/>

@@ -28,8 +28,8 @@
 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx1024m&#13;&#10;-Ddebug=true&#13;&#10;-Dnet4j.config=&quot;${project_loc:/org.eclipse.emf.cdo.server.product-feature}/rootfiles/configuration&quot;&#13;&#10;-Dorg.eclipse.emf.cdo.server.browser.port=7777&#13;&#10;-Dorg.osgi.service.http.port=8080&#13;&#10;-Dosgi.framework.extensions=org.eclipse.equinox.weaving.hook&#13;&#10;-Dorg.eclipse.emf.cdo.threedee.agent.name=&quot;Server&quot;"/>

 <stringAttribute key="pde.version" value="3.3"/>

 <stringAttribute key="product" value="org.eclipse.platform.ide"/>

-<stringAttribute key="selected_target_plugins" value="org.eclipse.ui.workbench@default:default,org.eclipse.equinox.app@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.jface.databinding@default:default,org.eclipse.core.variables@default:default,org.eclipse.help@default:default,org.eclipse.core.databinding.observable@default:default,org.aspectj.runtime@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.postgresql.jdbc3@default:default,org.eclipse.core.resources@default:default,org.aspectj.weaver@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.core.expressions@default:default,org.eclipse.jface@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.osgi.services@default:default,org.h2@default:default,org.eclipse.core.contenttype@default:default,com.mysql.jdbc@default:default,com.mongodb@default:default,org.eclipse.equinox.weaving.hook@default:false,org.hsqldb@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.databinding@default:default,org.eclipse.ant.core@default:default,org.eclipse.osgi@-1:true,org.eclipse.core.databinding.property@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,javax.servlet@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.common@default:default,org.apache.derby@default:default,com.ibm.icu@default:default,org.eclipse.core.runtime@default:true,org.eclipse.equinox.weaving.aspectj@3:true,org.eclipse.team.core@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.jobs@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.equinox.weaving.caching@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.ui@default:default,org.eclipse.swt@default:default"/>

-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.server.net4j@default:default,org.eclipse.net4j.util@default:default,org.eclipse.emf.cdo.server.mongodb@default:default,org.eclipse.emf.cdo.server.db@default:default,org.eclipse.net4j.db.derby@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.db.mysql@default:default,org.eclipse.emf.cdo.server@default:default,org.eclipse.net4j.db.hsqldb@default:default,org.eclipse.net4j@default:default,org.eclipse.emf.cdo.threedee.agent@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.db.postgresql@default:default,org.eclipse.emf.cdo.threedee.common@default:default,org.eclipse.emf.cdo.common@default:default"/>

+<stringAttribute key="selected_target_plugins" value="org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.weaving.caching@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.databinding.observable@default:default,org.h2@default:default,org.hsqldb@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.ui@default:default,org.eclipse.help@default:default,org.aspectj.weaver@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.commands@default:default,org.eclipse.emf.common@default:default,com.ibm.icu@default:default,org.eclipse.osgi.services@default:default,javax.servlet@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.jobs@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.core.expressions@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.aspectj.runtime@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.variables@default:default,org.postgresql.jdbc3@default:default,org.eclipse.emf.ecore.change@default:default,com.mongodb@default:default,org.eclipse.team.core@default:default,org.eclipse.equinox.weaving.aspectj@3:true,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.equinox.preferences@default:default,org.eclipse.osgi@-1:true,org.eclipse.core.resources@default:default,org.eclipse.equinox.common@2:true,org.eclipse.emf.ecore@default:default,org.eclipse.jface@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.swt@default:default,org.eclipse.emf.ecore.xmi@default:default,org.apache.derby@default:default,com.mysql.jdbc@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.server.db@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.net4j.db.hsqldb@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.emf.cdo.server@default:default,org.eclipse.emf.cdo.threedee.common@default:default,org.eclipse.net4j.db.h2@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j@default:default,org.eclipse.emf.cdo.threedee.agent@default:default,org.eclipse.net4j.db@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j.db.mysql@default:default,org.eclipse.net4j.db.derby@default:default,org.eclipse.emf.cdo.server.net4j@default:default,org.eclipse.emf.cdo.server.mongodb@default:default,org.eclipse.net4j.db.postgresql@default:default"/>

 <booleanAttribute key="show_selected_only" value="true"/>

 <stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>

 <booleanAttribute key="tracing" value="false"/>

diff --git a/org.eclipse.emf.cdo.threedee.ui/META-INF/MANIFEST.MF b/org.eclipse.emf.cdo.threedee.ui/META-INF/MANIFEST.MF
index 7a1fe6c..bc8f6c4 100644
--- a/org.eclipse.emf.cdo.threedee.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.cdo.threedee.ui/META-INF/MANIFEST.MF
@@ -6,7 +6,8 @@
 Bundle-Activator: org.eclipse.emf.cdo.threedee.ui.bundle.OM$Activator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
  com.sun.j3d;bundle-version="[1.0.0,2.0.0)",
- org.eclipse.emf.cdo.threedee;bundle-version="[1.0.0,2.0.0)"
+ org.eclipse.emf.cdo.threedee;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.ui
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: %providerName
diff --git a/org.eclipse.emf.cdo.threedee.ui/icons/sample.gif b/org.eclipse.emf.cdo.threedee.ui/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/org.eclipse.emf.cdo.threedee.ui/icons/sample.gif
Binary files differ
diff --git a/org.eclipse.emf.cdo.threedee.ui/plugin.xml b/org.eclipse.emf.cdo.threedee.ui/plugin.xml
index abb64e7..78d8aca 100644
--- a/org.eclipse.emf.cdo.threedee.ui/plugin.xml
+++ b/org.eclipse.emf.cdo.threedee.ui/plugin.xml
@@ -29,5 +29,31 @@
             name="Parameters">

       </view>

    </extension>

+   <extension

+         point="org.eclipse.ui.actionSets">

+      <actionSet

+            id="org.eclipse.emf.cdo.threedee.ui.actionSet"

+            label="Intro"

+            visible="true">

+         <menu

+               id="sampleMenu"

+               label="Sample &amp;Menu">

+            <separator

+                  name="sampleGroup">

+            </separator>

+         </menu>

+         <action

+               class="org.eclipse.emf.cdo.threedee.ui.actions.IntroAction"

+               icon="icons/world.gif"

+               id="org.eclipse.emf.cdo.threedee.ui.actions.IntroAction"

+               label="Intro"

+               menubarPath="sampleMenu/sampleGroup"

+               state="true"

+               style="push"

+               toolbarPath="sampleGroup"

+               tooltip="Intro">

+         </action>

+      </actionSet>

+   </extension>

 

 </plugin>

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 4053ce0..856a386 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
@@ -98,7 +98,7 @@
   @SuppressWarnings("unused")

   private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, ThreeDeeWorld.class);

 

-  private static boolean PRODUCTION = false;

+  private static boolean PRODUCTION = true;

 

   private Set<ElementDescriptor> disabledDescriptors = Collections.emptySet();

 

diff --git a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/actions/IntroAction.java b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/actions/IntroAction.java
new file mode 100644
index 0000000..d1acc1c
--- /dev/null
+++ b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/actions/IntroAction.java
@@ -0,0 +1,67 @@
+package org.eclipse.emf.cdo.threedee.ui.actions;
+
+import org.eclipse.emf.cdo.threedee.ui.nodes.IntroPlanet;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+
+/**
+ * Our sample action implements workbench action delegate. The action proxy will be created by the workbench and shown
+ * in the UI. When the user tries to use the action, this delegate will be created and execution will be delegated to
+ * it.
+ * 
+ * @see IWorkbenchWindowActionDelegate
+ */
+public class IntroAction implements IWorkbenchWindowActionDelegate
+{
+  private IWorkbenchWindow window;
+
+  /**
+   * The constructor.
+   */
+  public IntroAction()
+  {
+  }
+
+  /**
+   * The action has been activated. The argument of the method represents the 'real' action sitting in the workbench UI.
+   * 
+   * @see IWorkbenchWindowActionDelegate#run
+   */
+  public void run(IAction action)
+  {
+    IntroPlanet.START_LATCH.countDown();
+    // MessageDialog.openInformation(window.getShell(), "CDO Model Repository 3D UI", "Hello, Eclipse world");
+  }
+
+  /**
+   * Selection in the workbench has been changed. We can change the state of the 'real' action here if we want, but this
+   * can only happen after the delegate has been created.
+   * 
+   * @see IWorkbenchWindowActionDelegate#selectionChanged
+   */
+  public void selectionChanged(IAction action, ISelection selection)
+  {
+  }
+
+  /**
+   * We can use this method to dispose of any system resources we previously allocated.
+   * 
+   * @see IWorkbenchWindowActionDelegate#dispose
+   */
+  public void dispose()
+  {
+  }
+
+  /**
+   * We will cache window object in order to be able to provide parent shell for the message dialog.
+   * 
+   * @see IWorkbenchWindowActionDelegate#init
+   */
+  public void init(IWorkbenchWindow window)
+  {
+    this.window = window;
+  }
+}
diff --git a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/IntroPlanet.java b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/IntroPlanet.java
index 373893f..bf4a027 100644
--- a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/IntroPlanet.java
+++ b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/IntroPlanet.java
@@ -56,12 +56,15 @@
 

 import java.awt.Font;

 import java.net.URL;

+import java.util.concurrent.CountDownLatch;

 

 /**

  * @author Eike Stepper

  */

 public class IntroPlanet extends BranchGroup implements IColors

 {

+  public static final CountDownLatch START_LATCH = new CountDownLatch(1);

+

   private static final float RADIUS = 5.0f;

 

   private static final double Y0 = 9.5;

@@ -129,8 +132,9 @@
       {

         try

         {

-          System.out.println("Press enter to start intro...");

-          System.in.read();

+          START_LATCH.await();

+          // System.out.println("Press enter to start intro...");

+          // System.in.read();

         }

         catch (Exception ex)

         {

@@ -138,7 +142,6 @@
         }

 

         IntroPlanet planet = new IntroPlanet(world);

-

         planet.start();

       }

     }.start();

@@ -149,9 +152,9 @@
     new SoundPlayer("zarathustra.wav").start();

     new ChimeIn().start();

 

-    new TextAnimation(0, 34, 400, "Eike Stepper", 1).start();

-    new TextAnimation(0, 53, 500, "Martin Flügge", 1).start();

-    new TextAnimation(1, 12, 600, "EclipseCon 2011", 1).start();

+    new TextAnimation(0, 34, 400, "Wahlendorf", 1).start();

+    new TextAnimation(0, 53, 500, "Paranor AG", 1).start();

+    new TextAnimation(1, 12, 600, "Eike Stepper", 1).start();

     new TextAnimation(1, 34, 0, "CDO3D", 3)

     {

       @Override