diff --git a/de.prob.core/prob/macos/lib/cspm b/de.prob.core/prob/macos/lib/cspm
new file mode 100755
index 0000000000000000000000000000000000000000..e03e7ffe265fcc9ee586e86f84967e68780f1062
Binary files /dev/null and b/de.prob.core/prob/macos/lib/cspm differ
diff --git a/de.prob.core/src/de/prob/core/command/LoadCspModelCommand.java b/de.prob.core/src/de/prob/core/command/LoadCspModelCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..c28bf6cefe80c5111cda2bef18b4bf23c3f677c9
--- /dev/null
+++ b/de.prob.core/src/de/prob/core/command/LoadCspModelCommand.java
@@ -0,0 +1,132 @@
+/**
+ * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, Heinrich
+ * Heine Universitaet Duesseldorf This software is licenced under EPL 1.0
+ * (http://www.eclipse.org/org/documents/epl-v10.html)
+ * */
+
+package de.prob.core.command;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eventb.core.IEventBRoot;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+import de.be4.classicalb.core.parser.BParser;
+import de.be4.classicalb.core.parser.analysis.prolog.RecursiveMachineLoader;
+import de.be4.classicalb.core.parser.exceptions.BException;
+import de.be4.classicalb.core.parser.node.Start;
+import de.prob.core.Animator;
+import de.prob.core.domainobjects.Operation;
+import de.prob.core.domainobjects.ProBPreference;
+import de.prob.core.domainobjects.State;
+import de.prob.exceptions.ProBException;
+import de.prob.logging.Logger;
+import de.prob.parser.ISimplifiedROMap;
+import de.prob.prolog.output.IPrologTermOutput;
+import de.prob.prolog.output.StructuredPrologOutput;
+import de.prob.prolog.term.CompoundPrologTerm;
+import de.prob.prolog.term.ListPrologTerm;
+import de.prob.prolog.term.PrologTerm;
+
+/**
+ * Command to load a new Event B Model for animation.
+ */
+public final class LoadCspModelCommand {
+
+	private static boolean preferencesAlreadyCleanedUp = false;
+
+	private LoadCspModelCommand() {
+		throw new UnsupportedOperationException("Do not instantiate this class");
+	}
+
+	private LoadCspModelCommand(final IEventBRoot model) {
+	}
+
+
+	private static void removeObsoletePreferences(final Animator animator)
+			throws ProBException {
+		if (!preferencesAlreadyCleanedUp) {
+			// get all preference names from ProB
+			Collection<ProBPreference> prefs = GetPreferencesCommand
+					.getPreferences(animator);
+			Set<String> probPrefNames = new HashSet<String>();
+			for (ProBPreference probpref : prefs) {
+				probPrefNames.add(probpref.name);
+			}
+			// now check all stored (in Eclipse's store) preferences
+			// if they still exist
+			Preferences preferences = SetPreferencesCommand.getPreferences();
+			try {
+				boolean foundObsoletePreference = false;
+				for (String prefname : preferences.keys()) {
+					if (!probPrefNames.contains(prefname)) {
+						// preference does not exists anymore
+						preferences.remove(prefname);
+						foundObsoletePreference = true;
+						String message = "removed obsolete preference from preferences store: "
+								+ prefname;
+						Logger.info(message);
+					}
+				}
+				if (foundObsoletePreference) {
+					preferences.flush();
+				}
+			} catch (BackingStoreException e) {
+				Logger.notifyUser("Error while accessing ProB Preferences", e);
+			}
+			preferencesAlreadyCleanedUp = true;
+		}
+	}
+	
+	public static void load(final Animator animator, final File model, String name)
+			throws ProBException {
+		animator.resetDirty();
+		removeObsoletePreferences(animator);
+
+		final ClearMachineCommand clear = new ClearMachineCommand();
+		final SetPreferencesCommand setPrefs = SetPreferencesCommand
+				.createSetPreferencesCommand(animator);
+		final IComposableCommand load = getLoadCommand(model, name);
+		final StartAnimationCommand start = new StartAnimationCommand();
+		final ExploreStateCommand explore = new ExploreStateCommand("root");
+
+		final ComposedCommand composed = new ComposedCommand(clear, setPrefs,
+				load, start, explore);
+
+		animator.execute(composed);
+
+		final State commandResult = explore.getState();
+		animator.announceCurrentStateChanged(commandResult,
+				Operation.NULL_OPERATION);
+	}
+
+		private static IComposableCommand getLoadCommand(final File model, final String name)
+			throws ProBException {
+		return new IComposableCommand() {
+
+			@Override
+			public void writeCommand(final IPrologTermOutput pto) throws CommandException {
+				pto.openTerm("load_cspm_spec_from_cspm_file");
+				pto.printAtom(model.getAbsolutePath());
+				pto.closeTerm();
+				pto.printAtom("start_animation");
+			}
+
+			@Override
+			public void processResult(
+					final ISimplifiedROMap<String, PrologTerm> bindings) {
+				Animator.getAnimator().announceReset();
+			}
+		};
+					
+
+	}
+
+	
+}
diff --git a/de.prob.standalone/icons/csp.png b/de.prob.standalone/icons/csp.png
new file mode 100644
index 0000000000000000000000000000000000000000..26d3aeab2cbee46432ebb180e112bb32e69589d4
Binary files /dev/null and b/de.prob.standalone/icons/csp.png differ
diff --git a/de.prob.standalone/plugin.xml b/de.prob.standalone/plugin.xml
index 5011fc7bd78081d08fc601b0dfbd99c1858390ae..5e50c4d1458751ca574cb5de2474709ff30522b2 100644
--- a/de.prob.standalone/plugin.xml
+++ b/de.prob.standalone/plugin.xml
@@ -56,6 +56,30 @@
                </with>
             </visibleWhen>
          </command>
+         <command
+               commandId="de.prob.command.startCspAnimation"
+               icon="icons/icon16.png"
+               label="Start Animation / Model Checking"
+               style="push">
+            <visibleWhen>
+               <with
+                     variable="selection">
+                  <iterate
+                        operator="or">
+                     <and>
+                        <instanceof
+                              value="org.eclipse.core.resources.IResource">
+                        </instanceof>
+                        <test
+                              forcePluginActivation="true"
+                              property="org.eclipse.core.resources.extension"
+                              value="csp">
+                        </test>
+                     </and>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
          <command
                commandId="de.prob.command.startClassicalBAnimation"
                icon="icons/icon16.png"
@@ -354,11 +378,28 @@
                  <instanceof
                        value="org.eclipse.core.resources.IResource">
                  </instanceof>
+                 <or>
                  <test
                        forcePluginActivation="true"
                        property="org.eclipse.core.resources.extension"
                        value="mch">
                  </test>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.core.resources.extension"
+                       value="ref">
+                 </test>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.core.resources.extension"
+                       value="imp">
+                 </test>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.core.resources.extension"
+                       value="csp">
+                 </test>
+                 </or>
               </and>
               <and>
                  <instanceof
@@ -422,6 +463,42 @@
                        </test>
                     </and>
                  </not>
+                 <not>
+                    <and>
+                       <instanceof
+                             value="org.eclipse.core.resources.IFile">
+                       </instanceof>
+                       <test
+                             forcePluginActivation="true"
+                             property="org.eclipse.core.resources.extension"
+                             value="ref">
+                       </test>
+                    </and>
+                 </not>
+                 <not>
+                    <and>
+                       <instanceof
+                             value="org.eclipse.core.resources.IFile">
+                       </instanceof>
+                       <test
+                             forcePluginActivation="true"
+                             property="org.eclipse.core.resources.extension"
+                             value="imp">
+                       </test>
+                    </and>
+                 </not>
+                 <not>
+                    <and>
+                       <instanceof
+                             value="org.eclipse.core.resources.IFile">
+                       </instanceof>
+                       <test
+                             forcePluginActivation="true"
+                             property="org.eclipse.core.resources.extension"
+                             value="csp">
+                       </test>
+                    </and>
+                 </not>
                  <not>
                     <and>
                        <instanceof
@@ -445,6 +522,10 @@
            id="de.prob.command.startClassicalBAnimation"
            name="Classical-B Animate / Model Check">
      </command>
+     <command
+           id="de.prob.command.startCspAnimation"
+           name="CSP Animate / Model Check">
+     </command>
   </extension>
   <extension
         point="org.eclipse.ui.handlers">
@@ -472,6 +553,30 @@
            </with>
         </enabledWhen>
      </handler>
+     <handler
+           commandId="de.prob.command.startCspAnimation">
+        <class
+              class="de.prob.standalone.handler.StartCspAnimationHandler">
+        </class>
+        <enabledWhen>
+           <with
+                 variable="selection">
+              <iterate
+                    operator="or">
+                 <and>
+                    <instanceof
+                          value="org.eclipse.core.resources.IResource">
+                    </instanceof>
+                    <test
+                          forcePluginActivation="true"
+                          property="org.eclipse.core.resources.extension"
+                          value="csp">
+                    </test>
+                 </and>
+              </iterate>
+           </with>
+        </enabledWhen>
+     </handler>
   </extension>
   <extension
         point="de.bmotionstudio.gef.editor.language">
diff --git a/de.prob.standalone/src/de/prob/standalone/handler/StartCspAnimationHandler.java b/de.prob.standalone/src/de/prob/standalone/handler/StartCspAnimationHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..0fa5a2e4aff958befe54c65336f5049f148375e0
--- /dev/null
+++ b/de.prob.standalone/src/de/prob/standalone/handler/StartCspAnimationHandler.java
@@ -0,0 +1,49 @@
+package de.prob.standalone.handler;
+
+import java.io.File;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.commands.IHandlerListener;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import de.prob.core.Animator;
+import de.prob.core.command.LoadClassicalBModelCommand;
+import de.prob.core.command.LoadCspModelCommand;
+import de.prob.exceptions.ProBException;
+
+public class StartCspAnimationHandler extends AbstractHandler implements IHandler {
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		ISelection fSelection = HandlerUtil.getCurrentSelection(event);
+
+		if (fSelection instanceof IStructuredSelection) {
+			final IStructuredSelection ssel = (IStructuredSelection) fSelection;
+			if (ssel.size() == 1) {
+				final Object element = ssel.getFirstElement();
+				 if (element instanceof IFile) {
+					IFile f = (IFile) element;
+					String n = f.getName();
+					String name = n.substring(0,n.length()-4);
+					File file = new File(f.getLocationURI());
+					try {
+						LoadCspModelCommand.load(Animator.getAnimator(), file, name);
+					} catch (ProBException e) {
+						throw new ExecutionException(e.getLocalizedMessage(),e);
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	
+	
+	
+}
diff --git a/de.prob.standalone/src/de/prob/standalone/internal/FormalModelLabelProvider.java b/de.prob.standalone/src/de/prob/standalone/internal/FormalModelLabelProvider.java
index f28f7dd05660d6c5238265595957f7e5009f5a64..9a9da9e8d573febf303a9de20a996c66da49f807 100644
--- a/de.prob.standalone/src/de/prob/standalone/internal/FormalModelLabelProvider.java
+++ b/de.prob.standalone/src/de/prob/standalone/internal/FormalModelLabelProvider.java
@@ -24,7 +24,10 @@ public class FormalModelLabelProvider implements ILabelProvider {
 			} else if (file.getFileExtension().equals("buc")) {
 				return Activator.getImageDescriptor("icons/eventb/ctx_obj.png")
 						.createImage();
-			} else if (file.getFileExtension().equals("mch")) {
+			} else if (file.getFileExtension().equals("csp")) {
+				return Activator.getImageDescriptor("icons/csp.png")
+						.createImage();
+			} else {
 				return Activator.getImageDescriptor("icons/icon16.png")
 						.createImage();
 			}