diff --git a/plugins/org.eclipse.oomph.p2.ui/icons/sample.gif b/plugins/org.eclipse.oomph.p2.ui/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/plugins/org.eclipse.oomph.p2.ui/icons/sample.gif
Binary files differ
diff --git a/plugins/org.eclipse.oomph.p2.ui/plugin.xml b/plugins/org.eclipse.oomph.p2.ui/plugin.xml
index a939793..41da9d5 100644
--- a/plugins/org.eclipse.oomph.p2.ui/plugin.xml
+++ b/plugins/org.eclipse.oomph.p2.ui/plugin.xml
@@ -58,6 +58,15 @@
             id="org.eclipse.oomph.p2.ui.ExploreRepository"
             name="Explore Repository">
       </command>
+      <category
+            id="org.eclipse.oomph.p2.ui.commands.category"
+            name="Sample Category">
+      </category>
+      <command
+            categoryId="org.eclipse.oomph.p2.ui.commands.category"
+            id="org.eclipse.oomph.p2.ui.commands.sampleCommand"
+            name="Sample Command">
+      </command>
    </extension>
 
    <extension
@@ -76,6 +85,10 @@
              </iterate>
          </activeWhen>
       </handler>
+      <handler
+            class="org.eclipse.oomph.p2.ui.handlers.StripReleaseTrainHandler"
+            commandId="org.eclipse.oomph.p2.ui.commands.sampleCommand">
+      </handler>
    </extension>
 
    <extension
@@ -103,6 +116,33 @@
                 tooltip="Offline Mode">
           </command>
       </menuContribution>
+      <!--
+      <menuContribution
+            locationURI="menu:org.eclipse.ui.main.menu?after=additions">
+         <menu
+               id="org.eclipse.oomph.p2.ui.menus.sampleMenu"
+               label="Sample Menu"
+               mnemonic="M">
+            <command
+                  commandId="org.eclipse.oomph.p2.ui.commands.sampleCommand"
+                  id="org.eclipse.oomph.p2.ui.menus.sampleCommand"
+                  mnemonic="S">
+            </command>
+         </menu>
+      </menuContribution>
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
+         <toolbar
+               id="org.eclipse.oomph.p2.ui.toolbars.sampleToolbar">
+            <command
+                  commandId="org.eclipse.oomph.p2.ui.commands.sampleCommand"
+                  icon="icons/sample.gif"
+                  id="org.eclipse.oomph.p2.ui.toolbars.sampleCommand"
+                  tooltip="Say hello world">
+            </command>
+         </toolbar>
+      </menuContribution>
+  -->
    </extension>
 
 </plugin>
diff --git a/plugins/org.eclipse.oomph.p2.ui/src/org/eclipse/oomph/p2/ui/handlers/StripReleaseTrainHandler.java b/plugins/org.eclipse.oomph.p2.ui/src/org/eclipse/oomph/p2/ui/handlers/StripReleaseTrainHandler.java
new file mode 100644
index 0000000..35b7b89
--- /dev/null
+++ b/plugins/org.eclipse.oomph.p2.ui/src/org/eclipse/oomph/p2/ui/handlers/StripReleaseTrainHandler.java
@@ -0,0 +1,168 @@
+package org.eclipse.oomph.p2.ui.handlers;
+
+import org.eclipse.oomph.p2.core.Agent;
+import org.eclipse.oomph.p2.core.P2Util;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.equinox.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.query.QueryUtil;
+import org.eclipse.equinox.p2.repository.artifact.ArtifactKeyQuery;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
+import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
+import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import java.io.File;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Our sample handler extends AbstractHandler, an IHandler base class.
+ * @see org.eclipse.core.commands.IHandler
+ * @see org.eclipse.core.commands.AbstractHandler
+ */
+public class StripReleaseTrainHandler extends AbstractHandler
+{
+  /**
+   * The constructor.
+   */
+  public StripReleaseTrainHandler()
+  {
+  }
+
+  /**
+   * the command has been executed, so extract extract the needed information
+   * from the application context.
+   */
+  public Object execute(ExecutionEvent event) throws ExecutionException
+  {
+    stripTrain();
+    // stripOrbit();
+
+    IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
+    MessageDialog.openInformation(window.getShell(), "Oomph P2 Management UI", "Done!");
+    return null;
+  }
+
+  private void stripTrain()
+  {
+    String[] trainPrefixes = { "com.fasterxml.jackson", "com.mycorp.examples.timeservice", "com.naef.jnlua", "com.spotify.docker.client",
+        "com.thoughtworks.selenium", "jnr", "org.eclipse.actf", "org.eclipse.birt", "org.eclipse.bpel", "org.eclipse.bpmn2", "org.eclipse.cdt",
+        "org.eclipse.egf", "org.eclipse.emf.cdo", "org.eclipse.emf.diffmerge", "org.eclipse.emf.ecp", "org.eclipse.emf.edapt", "org.eclipse.emf.emfstore",
+        "org.eclipse.emf.facet", "org.eclipse.emf.query", "org.eclipse.emf.rap", "org.eclipse.emfforms", "org.eclipse.fx", "org.eclipse.gmt.modisco",
+        "org.eclipse.graphiti", "org.eclipse.gyrex", "org.eclipse.jpt", "org.eclipse.jsf", "org.eclipse.jst", "org.eclipse.jubula", "org.eclipse.jwt",
+        "org.eclipse.launchbar", "org.eclipse.ldt", "org.eclipse.libra", "org.eclipse.linuxtools", "org.eclipse.m2m", "org.eclipse.mat", "org.eclipse.modisco",
+        "org.eclipse.net4j", "org.eclipse.objectteams", "org.eclipse.papyrus", "org.eclipse.persistence", "org.eclipse.photran", "org.eclipse.php",
+        "org.eclipse.ptp", "org.eclipse.rap", "org.eclipse.rcptt", "org.eclipse.remote", "org.eclipse.riena", "org.eclipse.rse", "org.eclipse.scout",
+        "org.eclipse.sphinx", "org.eclipse.stardust", "org.eclipse.tcf", "org.eclipse.thym", "org.eclipse.tm", "org.eclipse.tracecompass", "org.eclipse.wb",
+        "org.eclipse.wtp", "org.eclipse.xwt", "org.eclipse.datatools", "org.eclipse.gef4", "org.eclipse.sapphire", "org.eclipse.uml2", "org.eclipse.xpand" };
+
+    try
+    {
+      URI uri = new File("C:/develop/develop/p2/releases/mars/201510021000").toURI();
+      Agent agent = P2Util.getAgentManager().getCurrentAgent();
+
+      List<IInstallableUnit> iusToRemove = new ArrayList<IInstallableUnit>();
+
+      IMetadataRepositoryManager metadataRepositoryManager = agent.getMetadataRepositoryManager();
+      IMetadataRepository metadataRepository = metadataRepositoryManager.loadRepository(uri, null);
+      for (IInstallableUnit iu : metadataRepository.query(QueryUtil.createIUAnyQuery(), null))
+      {
+        String id = iu.getId();
+        if (matches(id, trainPrefixes))
+        {
+          iusToRemove.add(iu);
+        }
+      }
+
+      metadataRepository.removeInstallableUnits(iusToRemove);
+      metadataRepositoryManager.removeRepository(uri);
+
+      List<IArtifactKey> keysToRemove = new ArrayList<IArtifactKey>();
+      IArtifactRepositoryManager artifactRepositoryManager = agent.getArtifactRepositoryManager();
+      IArtifactRepository artifactRepository = artifactRepositoryManager.loadRepository(uri, null);
+      for (IArtifactKey key : artifactRepository.query(ArtifactKeyQuery.ALL_KEYS, null))
+      {
+        String id = key.getId();
+        if (matches(id, trainPrefixes))
+        {
+          keysToRemove.add(key);
+        }
+      }
+
+      artifactRepository.removeDescriptors(keysToRemove.toArray(new IArtifactKey[keysToRemove.size()]), null);
+      artifactRepositoryManager.removeRepository(uri);
+    }
+    catch (Exception ex)
+    {
+      ex.printStackTrace();
+    }
+  }
+
+  private void stripOrbit()
+  {
+    String[] prefixes = { "javax.xml" };
+
+    try
+    {
+      URI uri = new File("C:/develop/develop/p2/tools/orbit/downloads/drops/R20150519210750/repository").toURI();
+      Agent agent = P2Util.getAgentManager().getCurrentAgent();
+
+      List<IInstallableUnit> iusToRemove = new ArrayList<IInstallableUnit>();
+
+      IMetadataRepositoryManager metadataRepositoryManager = agent.getMetadataRepositoryManager();
+      IMetadataRepository metadataRepository = metadataRepositoryManager.loadRepository(uri, null);
+      for (IInstallableUnit iu : metadataRepository.query(QueryUtil.createIUAnyQuery(), null))
+      {
+        String id = iu.getId();
+        if (!matches(id, prefixes))
+        {
+          iusToRemove.add(iu);
+        }
+      }
+
+      metadataRepository.removeInstallableUnits(iusToRemove);
+      metadataRepositoryManager.removeRepository(uri);
+
+      List<IArtifactKey> keysToRemove = new ArrayList<IArtifactKey>();
+      IArtifactRepositoryManager artifactRepositoryManager = agent.getArtifactRepositoryManager();
+      IArtifactRepository artifactRepository = artifactRepositoryManager.loadRepository(uri, null);
+      for (IArtifactKey key : artifactRepository.query(ArtifactKeyQuery.ALL_KEYS, null))
+      {
+        String id = key.getId();
+        if (!matches(id, prefixes))
+        {
+          keysToRemove.add(key);
+        }
+      }
+
+      artifactRepository.removeDescriptors(keysToRemove.toArray(new IArtifactKey[keysToRemove.size()]), null);
+      artifactRepositoryManager.removeRepository(uri);
+    }
+    catch (Exception ex)
+    {
+      ex.printStackTrace();
+    }
+  }
+
+  private static boolean matches(String id, String[] prefixes)
+  {
+    for (int i = 0; i < prefixes.length; i++)
+    {
+      String prefix = prefixes[i] + ".";
+      if (id.startsWith(prefix))
+      {
+        return true;
+      }
+    }
+
+    return false;
+  }
+}
diff --git "a/plugins/org.eclipse.oomph.setup.installer/SetupArchiver \050Local\051.launch" "b/plugins/org.eclipse.oomph.setup.installer/SetupArchiver \050Local\051.launch"
new file mode 100644
index 0000000..9d57120
--- /dev/null
+++ "b/plugins/org.eclipse.oomph.setup.installer/SetupArchiver \050Local\051.launch"
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<setAttribute key="additional_plugins"/>
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.oomph.setup.installer.SetupArchiver"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
+<stringAttribute key="bad_container_name" value="\org.eclipse.oomph.setup.insta"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/SetupArchiver (Local)"/>
+<booleanAttribute key="default" value="false"/>
+<stringAttribute key="featureDefaultLocation" value="workspace"/>
+<stringAttribute key="featurePluginResolution" value="workspace"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="@none"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog&#13;&#10;-target C:\develop\develop\setups\setups.zip"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dheadless.startup=true&#13;&#10;-Doomph.redirection.mirror.nothing=true&#13;&#10;-Doomph.redirection.local=http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/-&gt;${file_uri:${resource_loc:/setups}}/"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<setAttribute key="selected_features">
+<setEntry value="org.eclipse.oomph.p2:default"/>
+<setEntry value="org.eclipse.oomph.setup.installer:default"/>
+</setAttribute>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,com.jcraft.jsch@default:default,javax.annotation@default:default,javax.inject@default:default,javax.xml@default:default,org.apache.batik.css*1.6.0.v201011041432@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.6.0.v201011041432@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.6.0.v201011041432@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.java7@default:false,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86_64@default:false,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.debug.core@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.touchpoint.natives@default:default,org.eclipse.equinox.p2.transport.ecf@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.oomph.base.edit@default:default,org.eclipse.oomph.base@default:default,org.eclipse.oomph.extractor.lib@default:default,org.eclipse.oomph.jreinfo.ui@default:default,org.eclipse.oomph.jreinfo.win32.x86_64@default:false,org.eclipse.oomph.jreinfo@default:default,org.eclipse.oomph.p2.core@default:default,org.eclipse.oomph.p2.edit@default:default,org.eclipse.oomph.p2.ui@default:default,org.eclipse.oomph.p2@default:default,org.eclipse.oomph.predicates@default:default,org.eclipse.oomph.preferences@default:default,org.eclipse.oomph.resources@default:default,org.eclipse.oomph.setup.core@default:default,org.eclipse.oomph.setup.edit@default:default,org.eclipse.oomph.setup.installer@default:default,org.eclipse.oomph.setup.p2.edit@default:default,org.eclipse.oomph.setup.p2@default:default,org.eclipse.oomph.setup.tests@default:default,org.eclipse.oomph.setup.ui@default:default,org.eclipse.oomph.setup@default:default,org.eclipse.oomph.targlets.core@default:default,org.eclipse.oomph.targlets@default:default,org.eclipse.oomph.ui@default:default,org.eclipse.oomph.util.pde@default:default,org.eclipse.oomph.util@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="true"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/releng/org.eclipse.oomph.releng/Build All Platforms.launch b/releng/org.eclipse.oomph.releng/Build All Platforms.launch
new file mode 100644
index 0000000..76209dd
--- /dev/null
+++ b/releng/org.eclipse.oomph.releng/Build All Platforms.launch
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${maven.root}\bin\mvn.bat"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-Dbuild.id=Unknown&#13;&#10;-Dgit.commit=Unknown&#13;&#10;-Dgit.branch=Unknown&#13;&#10;-DskipTests=true&#13;&#10;-DDtycho.debug.resolver=true&#13;&#10;-DX&#13;&#10;clean&#13;&#10;verify"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${git.clone.oomph}"/>
+</launchConfiguration>
diff --git a/setups/Oomph.setup b/setups/Oomph.setup
index ea72e5e..c8fa24c 100644
--- a/setups/Oomph.setup
+++ b/setups/Oomph.setup
@@ -47,8 +47,6 @@
     <requirement
         name="org.eclipse.oomph.projectcopy.feature.group"/>
     <requirement
-        name="org.eclipse.oomph.version.feature.group"/>
-    <requirement
         name="org.eclipse.emf.ecoretools.sdk.feature.group"/>
     <requirement
         name="org.eclipse.swtbot.ide.feature.group"/>
@@ -114,12 +112,6 @@
   </setupTask>
   <setupTask
       xsi:type="setup:EclipseIniTask"
-      option="-Doomph.redirection.setups"
-      value="=http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/->${git.clone.oomph.location|uri}/setups/"
-      vm="true"
-      documentation="Redirect to the development version of the releng setup model."/>
-  <setupTask
-      xsi:type="setup:EclipseIniTask"
       option="-Xmx"
       value="2048m"
       vm="true"/>
@@ -162,24 +154,9 @@
     <setupTask
         xsi:type="git:GitCloneTask"
         id="git.clone.oomph"
-        remoteURI="oomph/org.eclipse.oomph"
+        remoteURI="https://git.eclipse.org/r/oomph/org.eclipse.oomph"
         checkoutBranch="master"
         userID="">
-      <annotation
-          source="http://www.eclipse.org/oomph/setup/InducedChoices">
-        <detail
-            key="inherit">
-          <value>eclipse.git.gerrit.remoteURIs</value>
-        </detail>
-        <detail
-            key="label">
-          <value>Oomph Git or Gerrit Repository</value>
-        </detail>
-        <detail
-            key="target">
-          <value>remoteURI</value>
-        </detail>
-      </annotation>
       <description>Oomph</description>
     </setupTask>
     <setupTask
diff --git a/setups/OomphTutorial.setup b/setups/OomphTutorial.setup
new file mode 100644
index 0000000..95cb5ab
--- /dev/null
+++ b/setups/OomphTutorial.setup
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<setup:Project
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:projects="http://www.eclipse.org/oomph/setup/projects/1.0"
+    xmlns:setup="http://www.eclipse.org/oomph/setup/1.0"
+    xmlns:setup.p2="http://www.eclipse.org/oomph/setup/p2/1.0"
+    xsi:schemaLocation="http://www.eclipse.org/oomph/setup/projects/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/Projects.ecore"
+    name="oomph-tutorial"
+    label="Oomph Tutorial">
+  <setupTask
+      xsi:type="setup:EclipseIniTask"
+      option="-Xmx"
+      value="1024m"
+      vm="true">
+    <description>Set the heap space needed to work with the projects of ${scope.project.label}</description>
+  </setupTask>
+  <setupTask
+      xsi:type="setup:PreferenceTask"
+      key="/instance/org.eclipse.ui.ide/WORKSPACE_NAME"
+      value="Oomph Tutorial"/>
+  <setupTask
+      xsi:type="setup:StringSubstitutionTask"
+      name="oomph.tutorial.location"
+      value="${oomph.tutorial.location|file}"/>
+  <setupTask
+      xsi:type="setup:VariableTask"
+      name="eclipse.target.platform"
+      value="None"
+      defaultValue="Mars"
+      storageURI="scope://Workspace"/>
+  <setupTask
+      xsi:type="setup.p2:P2Task">
+    <requirement
+        name="org.eclipse.oomph.setup.sdk.feature.group"/>
+    <requirement
+        name="org.eclipse.oomph.workingsets.feature.group"/>
+    <requirement
+        name="org.eclipse.oomph.targlets.feature.group"/>
+    <requirement
+        name="org.eclipse.oomph.ostools.feature.group"
+        optional="true"/>
+    <description>Install the tools needed in the IDE to work with the source code for ${scope.project.label}</description>
+  </setupTask>
+  <setupTask
+      xsi:type="setup:ResourceCreationTask"
+      excludedTriggers="STARTUP MANUAL"
+      content="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xD;&#xA;&lt;section name=&quot;Workbench&quot;>&#xD;&#xA;        &lt;section name=&quot;RepositoryManager&quot;>&#xD;&#xA;                &lt;list key=&quot;repositories&quot;>&#xD;&#xA;                        &lt;item value=&quot;${oomph.tutorial.location}/p2/cbi/updates/license&quot;/>&#xD;&#xA;                        &lt;item value=&quot;${oomph.tutorial.location}/p2/oomph/products/repository&quot;/>&#xD;&#xA;                        &lt;item value=&quot;${oomph.tutorial.location}/p2/oomph/updates/milestone/latest&quot;/>&#xD;&#xA;                        &lt;item value=&quot;${oomph.tutorial.location}/p2/releases/mars/201510021000&quot;/>&#xD;&#xA;                        &lt;item value=&quot;${oomph.tutorial.location}/p2/technology/epp/packages/mars&quot;/>&#xD;&#xA;                        &lt;item value=&quot;${oomph.tutorial.location}/p2/tools/orbit/downloads/drops/R20150519210750/repository&quot;/>&#xD;&#xA;                &lt;/list>&#xD;&#xA;        &lt;/section>&#xD;&#xA;&lt;/section>"
+      targetURL="${workspace.location|uri}/.metadata/.plugins/org.eclipse.oomph.p2.ui/dialog_settings.xml"
+      encoding="UTF-8">
+    <description>Initialize the Repository Explorer history list with the local p2 mirrors of the tutorial</description>
+  </setupTask>
+  <setupTask
+      xsi:type="projects:ProjectsImportTask">
+    <sourceLocator
+        rootFolder="${oomph.tutorial.location|file/oomph-tutorial}"/>
+    <description>Import the oomph-tutorial project into the Oomph tutorial workspace</description>
+  </setupTask>
+  <stream name="master"
+      label="Master"/>
+  <logicalProjectContainer
+      xsi:type="setup:ProjectCatalog"
+      href="index:/org.eclipse.setup#//@projectCatalogs[name='org.eclipse']"/>
+  <description>Oomph Tutorial provides a development environment for developing project setups</description>
+</setup:Project>
diff --git a/setups/org.eclipse.products.setup b/setups/org.eclipse.products.setup
index 5c2b087..79723c9 100644
--- a/setups/org.eclipse.products.setup
+++ b/setups/org.eclipse.products.setup
@@ -31,6 +31,95 @@
     <repository
         url="${oomph.update.url}"/>
   </setupTask>
+  <setupTask
+      xsi:type="setup:CompoundTask"
+      name="Offline Redirections">
+    <setupTask
+        xsi:type="setup:VariableTask"
+        name="oomph.tutorial.location"
+        defaultValue="${eclipse.home.root.location|basepath|basepath}"
+        label="Oomph Tutorial Location">
+      <description>The root folder for the Oomph tutorial distribution</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:EclipseIniTask"
+        excludedTriggers="STARTUP MANUAL"
+        option="-Doomph.redirection.archive="
+        value="http://www.eclipse.org/setups/setups.zip->${oomph.tutorial.location}/setups/setups.zip"
+        vm="true"/>
+    <setupTask
+        xsi:type="setup:EclipseIniTask"
+        excludedTriggers="STARTUP MANUAL"
+        option="-Doomph.tutorial.location="
+        value="${oomph.tutorial.location}"
+        vm="true"/>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/"
+        targetURL="${oomph.tutorial.location}/p2/">
+      <description>Redirect all of download.eclipse.org to the tutorial's local mirrors</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="git://git.eclipse.org/gitroot/"
+        targetURL="${oomph.tutorial.location}/git/">
+      <description>Redirect all git access to git.eclipse.org to the tutorial's local clones</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://git.eclipse.org/gitroot/"
+        targetURL="${oomph.tutorial.location}/git/">
+      <description>Redirect all http access to git.eclipse.org to the tutorial's local clones</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="https://git.eclipse.org/r/"
+        targetURL="${oomph.tutorial.location}/git/">
+      <description>Redirect all http access to git.eclipse.org to the tutorial's local clones</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/egit/updates"
+        targetURL="http://download.eclipse.org/releases/mars/201510021000">
+      <description>Redirect egit updates to update from the Mars release</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/releases/mars"
+        targetURL="http://download.eclipse.org/releases/mars/201510021000">
+      <description>Redirect the Mars composite to the release child of that composite</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/eclipse/updates/4.5"
+        targetURL="http://download.eclipse.org/releases/mars/201510021000">
+      <description>Redirect the Platform's 4.5 updates to the Mars release</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/egit/updates-stable-nightly"
+        targetURL="http://download.eclipse.org/releases/mars/201510021000">
+      <description>Redirect the Platform's 4.5 milestone updates to the Mars release</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/modeling/emf/emf/updates/nightly/core"
+        targetURL="http://download.eclipse.org/releases/mars/201510021000">
+      <description>Redirect the Platform's 4.5 milestone updates to the Mars release</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/modeling/emf/cdo/orbit/latest-R"
+        targetURL="http://download.eclipse.org/tools/orbit/downloads/drops/R20150519210750/repository">
+      <description>Redirect the Platform's 4.5 milestone updates to the Mars release</description>
+    </setupTask>
+    <setupTask
+        xsi:type="setup:RedirectionTask"
+        sourceURL="http://download.eclipse.org/mylyn/snapshots/weekly"
+        targetURL="http://download.eclipse.org/releases/mars/201510021000">
+      <description>Redirect the Platform's 4.5 milestone updates to the Mars release</description>
+    </setupTask>
+  </setupTask>
   <product name="epp.package.java"
       label="Eclipse IDE for Java Developers">
     <annotation
diff --git a/setups/org.eclipse.projects.setup b/setups/org.eclipse.projects.setup
index 68ff283..d4333c6 100644
--- a/setups/org.eclipse.projects.setup
+++ b/setups/org.eclipse.projects.setup
@@ -361,6 +361,7 @@
     </targlet>
   </setupTask>
   <project href="user:/org.eclipse.projects.setup?name='user.project',label='&lt;User>',description='A container project for local user projects that are virtual members of the Eclipse.org project catalog'#/"/>
+  <project href="OomphTutorial.setup#/"/>
   <project href="https://git.eclipse.org/c/acceleo/org.eclipse.acceleo.git/plain/releng/org.eclipse.acceleo.releng/Acceleo.setup#/"/>
   <project href="https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/plain/releng/org.eclipse.amalgam.releng/Amalgam.setup#/"/>
   <project href="https://raw.githubusercontent.com/eclipse/buildship/master/buildship.setup#/"/>
