diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java
index f04beac90eb7f68989e9d82347b477d9a167f38d..4cc9c96f14afaa6edb96a01000fbbcf842897d6b 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/ITutorialProvider.java
@@ -29,9 +29,6 @@ import org.fortiss.tooling.kernel.extension.data.TutorialStep;
  * @ConQAT.Rating RED Hash:
  */
 public interface ITutorialProvider {
-	/** Returns the description of the tutorial. */
-	public String getDescription();
-
 	/** Returns the root element of this tutorial. */
 	public EObject getRootElement();
 
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java
index 65f6b599f1fb0327bb84f193c619ecdc4bd857d0..e05d70180b232861e6ec778fa61bc0c60d6fb488 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/TutorialService.java
@@ -17,11 +17,10 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.internal;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
 
-import org.conqat.lib.commons.collections.UnmodifiableList;
+import org.conqat.lib.commons.collections.UnmodifiableMap;
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.kernel.extension.ITutorialProvider;
 import org.fortiss.tooling.kernel.extension.ITutorialWhitelistProvider;
@@ -40,7 +39,7 @@ import org.fortiss.tooling.kernel.service.ITutorialService;
 public final class TutorialService implements ITutorialService, ITutorialWhitelistProvider {
 
 	/** The collection of all defined tutorials. */
-	private List<ITutorialProvider> allTutorials = new ArrayList<>();
+	private Map<String, Class<? extends ITutorialProvider>> allTutorials = new HashMap<>();
 
 	/** The active tutorial. */
 	private ITutorialProvider activeTutorial = null;
@@ -67,32 +66,38 @@ public final class TutorialService implements ITutorialService, ITutorialWhiteli
 
 	/** {@inheritDoc} */
 	@Override
-	public Collection<ITutorialProvider> getAllTutorialProviders() {
-		return new UnmodifiableList<>(allTutorials);
+	public Map<String, Class<? extends ITutorialProvider>> getAllTutorialProviders() {
+		return new UnmodifiableMap<String, Class<? extends ITutorialProvider>>(allTutorials);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public void registerTutorial(ITutorialProvider provider) {
-		if(!allTutorials.contains(provider)) {
-			allTutorials.add(provider);
-		}
+	public void registerTutorial(String name, Class<? extends ITutorialProvider> provider) {
+		allTutorials.put(name, provider);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public void startTutorial(ITutorialProvider provider) {
-		activeTutorial = provider;
-		activeStep = activeTutorial.getInitialStep();
-
-		IPersistencyService.INSTANCE.addDummyEObjectAsTopLevelElement(activeTutorial
-				.getRootElement());
-		System.out.println("start tutorial for provider: " + activeTutorial.getClass().getName());
+	public void startTutorial(String name) {
+		if(!allTutorials.containsKey(name)) {
+			return;
+		}
+		try {
+			activeTutorial = allTutorials.get(name).newInstance();
+			activeStep = activeTutorial.getInitialStep();
+			EObject root = activeTutorial.getRootElement();
+			IPersistencyService.INSTANCE.addDummyEObjectAsTopLevelElement(root);
+		} catch(InstantiationException e) {
+			e.printStackTrace();
+		} catch(IllegalAccessException e) {
+			e.printStackTrace();
+		}
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public void stopTutorial() {
+		IPersistencyService.INSTANCE.removeDummyTopLevelElement(activeTutorial.getRootElement());
 		activeStep = null;
 		activeTutorial = null;
 	}
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java
index 2b90ce4e5167551b08970020a62c1967f535ddad..744f3a78bb8a44e76d748c85703233b0c596ad44 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/service/ITutorialService.java
@@ -17,7 +17,7 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.service;
 
-import java.util.Collection;
+import java.util.Map;
 
 import org.fortiss.tooling.kernel.extension.ITutorialProvider;
 import org.fortiss.tooling.kernel.extension.data.TutorialStep;
@@ -44,7 +44,7 @@ public interface ITutorialService {
 	public ITutorialProvider getActiveTutorial();
 
 	/** Starts the given tutorial. */
-	public void startTutorial(ITutorialProvider provider);
+	public void startTutorial(String name);
 
 	/** Stops the current tutorial. */
 	public void stopTutorial();
@@ -53,8 +53,8 @@ public interface ITutorialService {
 	public TutorialStep getActiveTutorialStep();
 
 	/** Returns all registered tutorial providers. */
-	public Collection<ITutorialProvider> getAllTutorialProviders();
+	public Map<String, Class<? extends ITutorialProvider>> getAllTutorialProviders();
 
 	/** Programmatically register a tutorial provider. */
-	public void registerTutorial(ITutorialProvider provider);
+	public void registerTutorial(String name, Class<? extends ITutorialProvider> provider);
 }