cleanup:
- make internal package x-internal
- fix paths for "selectReveal"
- replace association by hashmap with nesting
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/META-INF/MANIFEST.MF b/plugins/org.eclipse.objectteams.otdt.samples/META-INF/MANIFEST.MF
index 7390271..f224e8b 100644
--- a/plugins/org.eclipse.objectteams.otdt.samples/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.objectteams.otdt.samples/META-INF/MANIFEST.MF
@@ -22,6 +22,6 @@
  org.eclipse.jdt.core,
  org.eclipse.objectteams.otdt.ui.help,
  org.eclipse.jdt.debug.ui
-Export-Package: org.eclipse.objectteams.otdt.internal.samples
+Export-Package: org.eclipse.objectteams.otdt.internal.samples;x-internal:="true"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/plugin.xml b/plugins/org.eclipse.objectteams.otdt.samples/plugin.xml
index 2cc0518..564ccc2 100644
--- a/plugins/org.eclipse.objectteams.otdt.samples/plugin.xml
+++ b/plugins/org.eclipse.objectteams.otdt.samples/plugin.xml
@@ -16,7 +16,7 @@
          <project
                name="OTSample-StopWatch"
                archive="samples/stopwatch.zip"
-               selectReveal="Main.java">
+               selectReveal="src/org/eclipse/objectteams/example/stopwatch/Main.java">
          </project>
          <activity id="org.eclipse.javaDevelopment"/>
          <activity id="org.eclipse.debugging"/>
@@ -34,7 +34,7 @@
          <project
                name="OTSample-Observer"
                archive="samples/observer.zip"
-               selectReveal="pattern/ObserverPattern.java">
+               selectReveal="src/org/eclipse/objectteams/example/observer/pattern/ObserverPattern.java">
          </project>
       </sample>
       <!-- the launchTarget attribute is not specified in the XML schema extension point description, however it is used in the code :-/ -->
@@ -84,7 +84,7 @@
          <project
                name="OTSample-ATM"
                archive="samples/atm.zip"
-               selectReveal="src/Main.java">
+               selectReveal="src/org/eclipse/objectteams/example/atm/Main.java">
          </project>
       </sample>
 
@@ -159,9 +159,17 @@
 <!--  -->
    <extension
          point="org.eclipse.objectteams.otequinox.aspectBindings">
-      <aspectBinding>
-         <team class="org.eclipse.objectteams.otdt.internal.samples.SamplesAdapter" activation="ALL_THREADS"/>
-         <basePlugin id="org.eclipse.pde.ui"/>
+      <aspectBinding
+            icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/calloutbinding_obj.gif">
+         <basePlugin 
+               icon="platform:/plugin/org.eclipse.pde.ui/icons/obj16/plugin_obj.gif"
+               id="org.eclipse.pde.ui"/>
+         <team class="org.eclipse.objectteams.otdt.internal.samples.SamplesAdapter"
+               icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif"
+               activation="ALL_THREADS"/>
+         <team class="org.eclipse.objectteams.otdt.internal.samples.SamplesAdapter.SampleWizardAdapter"
+               icon="platform:/plugin/org.eclipse.objectteams.otdt.ui/icons/ot/team_obj.gif"
+               activation="NONE"/>
       </aspectBinding>
    </extension>
 <!-- -->
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SamplesAdapter.java b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SamplesAdapter.java
index e0b1c48..4a35ee4 100644
--- a/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SamplesAdapter.java
+++ b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SamplesAdapter.java
@@ -77,8 +77,6 @@
 @SuppressWarnings("restriction")
 public team class SamplesAdapter
 {
-	private Map<IConfigurationElement,SampleWizardAdapter> _wizards = new HashMap<IConfigurationElement, SampleWizardAdapter>();
-	
 	boolean _needsAdaptation = false;
 	
 	public boolean isOTSample(String sampleId)
@@ -128,7 +126,7 @@
 		void updateEntries() <- replace void updateEntries();
 	}
 	
-	public class SampleWizardAdapter playedBy SampleWizard
+	protected team class SampleWizardAdapter playedBy SampleWizard
 		when (needsAdaptation())
 	{
 		IProject[] _createdProjects;
@@ -146,11 +144,12 @@
 		
 		callin boolean performFinish()
 		{
-			SamplesAdapter.this._wizards.put(getSelection(), this);
-			boolean result = base.performFinish();
-			SamplesAdapter.this._wizards.remove(getSelection());
-			
-			return result;
+			activate(ALL_THREADS); // base call forks, so a per-thread within() is not sufficient
+			try {
+				return base.performFinish();
+			} finally {
+				deactivate(ALL_THREADS);
+			}
 		}
 		
 		
@@ -273,38 +272,36 @@
 		                                     -> void setSampleEditorNeeded(boolean sampleEditorNeeded);
 		IConfigurationElement getSelection() -> IConfigurationElement getSelection();
 		
-	}
-	
-	public class SampleOperationAdaptor playedBy SampleOperation
-	{
-		void fetchCreatedProjects()
+		public class SampleOperationAdaptor playedBy SampleOperation
 		{
-			IProject[] projects = getCreatedProjects();
-			SampleWizardAdapter wizardAdapter = SamplesAdapter.this._wizards.get(getSample());
-			if (wizardAdapter != null && projects != null)
-				wizardAdapter.setCreatedProjects(projects);
-		}
-		
-		// Original implementation doesn't copy the "launchTarget" attribute from configuration element to manifest file
-		void fixCreatedSampleManifestContent(String projectName, Properties properties) 
-		{
-			final String attr = "launchTarget"; //$NON-NLS-1$
-			writeProperty(properties, attr, getSample().getAttribute(attr));
-		}
-		
-		void fetchCreatedProjects() <- after void run(IProgressMonitor monitor);
-		
-		void fixCreatedSampleManifestContent(String projectName, Properties properties) 
-									<- after void createSampleManifestContent(String projectName, Properties properties);
+			void fetchCreatedProjects()
+			{
+				IProject[] projects = getCreatedProjects();
+				if (projects != null)
+					SampleWizardAdapter.this.setCreatedProjects(projects);
+			}
+			
+			// Original implementation doesn't copy the "launchTarget" attribute from configuration element to manifest file
+			void fixCreatedSampleManifestContent(String projectName, Properties properties)
+			{
+				final String attr = "launchTarget"; //$NON-NLS-1$
+				writeProperty(properties, attr, getSample().getAttribute(attr));
+			}
+			
+			void fetchCreatedProjects() <- after void run(IProgressMonitor monitor);
+			
+			void fixCreatedSampleManifestContent(String projectName, Properties properties)
+										<- after void createSampleManifestContent(String projectName, Properties properties);
 
-		
-		@SuppressWarnings("decapsulation")
-		void writeProperty(Properties properties, String name, String value)
-										  -> void writeProperty(Properties properties, String name, String value);
-		
-		IProject[] getCreatedProjects()   -> IProject[] getCreatedProjects();
-		@SuppressWarnings("decapsulation")
-		IConfigurationElement getSample() -> get IConfigurationElement sample;
+
+			@SuppressWarnings("decapsulation")
+			void writeProperty(Properties properties, String name, String value)
+			-> void writeProperty(Properties properties, String name, String value);
+			
+			IProject[] getCreatedProjects()   -> IProject[] getCreatedProjects();
+			@SuppressWarnings("decapsulation")
+			IConfigurationElement getSample() -> get IConfigurationElement sample;
+		}
 	}
 	
 	/** This role generalizes over unrelated base classes SampleStandbyContent and SampleEditor. */