diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/.classpath b/org.eclipse.amp/plugins/org.eclipse.amp.source/.classpath
new file mode 100644
index 0000000..2d1a430
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/.project b/org.eclipse.amp/plugins/org.eclipse.amp.source/.project
new file mode 100644
index 0000000..ced9af9
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.amp.source</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/META-INF/MANIFEST.MF b/org.eclipse.amp/plugins/org.eclipse.amp.source/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9af321b
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.amp.source
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.amp.source.plugin.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/about.html b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.html
new file mode 100644
index 0000000..65d4bc2
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>October 5, 2009</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/about.ini b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.ini
new file mode 100644
index 0000000..254cd24
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.ini
@@ -0,0 +1,14 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=amp32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/about.mapppings b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.mapppings
new file mode 100644
index 0000000..720ca87
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.mapppings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=@build@
\ No newline at end of file
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/about.properties b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.properties
new file mode 100644
index 0000000..54107d4
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/about.properties
@@ -0,0 +1,31 @@
+# NLS_MESSAGEFORMAT_VAR
+
+# ==============================================================================
+# Do not change the properties between this line and the last line containing:
+# %%% END OF TRANSLATED PROPERTIES %%%
+# Instead, either redefine an existing property, or create a new property,
+# append it to the end of the file, and change the code to use the new name.
+# ==============================================================================
+
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+
+featureName=Agent Modeling Platform SDK (Incubation)
+
+featureText=Agent Modeling Platform SDK (Incubation)\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+(c) Copyright 2007-2009 Metascape LLC, Copyright 2006-2007 Argonne National Laboratory. Copyright 2009 Other Eclipse contributors. All rights reserved.\n\
+\n\
+Agent Modeling Platform, including Agent Modeling Framework, Agent eXecution Framework, Agent Graphics and Visualization Framework, and Escape.\n\
+\n\
+Visit http://www.eclipse.org/amp
+
+# ==============================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# The above properties have been shipped for translation.
+# ==============================================================================
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/amp32.png b/org.eclipse.amp/plugins/org.eclipse.amp.source/amp32.png
new file mode 100644
index 0000000..fc34f4a
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/amp32.png
Binary files differ
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/build.properties b/org.eclipse.amp/plugins/org.eclipse.amp.source/build.properties
new file mode 100644
index 0000000..356df33
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = .,\
+               about.html,\
+               about.ini,\
+               about.properties,\
+               amp32.png,\
+               plugin.properties,\
+               META-INF/,\
+               about.mapppings
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/plugin.properties b/org.eclipse.amp/plugins/org.eclipse.amp.source/plugin.properties
new file mode 100644
index 0000000..234a097
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/plugin.properties
@@ -0,0 +1,31 @@
+# /**
+#  * <copyright>
+#  *
+#  * Copyright (c) 2009 Metascape, LLC.
+#  * All rights reserved.   This program and the accompanying materials
+#  * are made available under the terms of the Eclipse Public License v1.0
+#  * which accompanies this distribution, and is available at
+#  * http://www.eclipse.org/legal/epl-v10.html
+#  * 
+#  * Contributors: 
+#  *   Metascape - Initial API and Implementation
+#  *
+#  * </copyright>
+#  *
+#  * $Id: plugin.properties
+#  */
+
+# ====================================================================
+# To code developer:
+#   Do NOT change the properties between this line and the
+#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
+#   Make a new property name, append to the end of the file and change
+#   the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName = Agent Modeling Platform Source (Incubation)
+providerName = Eclipse Agent Modeling Platform
diff --git a/org.eclipse.amp/plugins/org.eclipse.amp.source/src/org/eclipse/amp/source/plugin/Activator.java b/org.eclipse.amp/plugins/org.eclipse.amp.source/src/org/eclipse/amp/source/plugin/Activator.java
new file mode 100644
index 0000000..bd53025
--- /dev/null
+++ b/org.eclipse.amp/plugins/org.eclipse.amp.source/src/org/eclipse/amp/source/plugin/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.amp.source.plugin;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.amp.source.plugin";
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
