<h2>Installing AMP using Update Sites (Recommended)</h2>
<ol>
				<li><b>Install the latest version of Eclipse from <a href="http://eclipse.org/downloads" />here</a>.</b>
				<p>AMP is built for Eclipse 3.6 (Helios). We recommend the "Eclipse Modeling Tools" release, though "Eclipse
				Classic"" also works well.*</p>
				</li>
				<li><b>Add update sites for AMP and AMP dependencies.</b>
				<p>Look <a href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.user/tasks/tasks-124.htm">here</a>
				for more details.**</p>
				<ul>
								<li><b>Add External Update Site(s)</b>
								<p><i>Before</i> installing AMP itself, you'll want to add the external Update Sites for Agent Modeling
								Extensions. ** Simply type the URL in the "Work with:" box and hit return. For most usages, you'll just need
								to add the LWJGL update site as shown below. Don't actually install anything yet.</p>
								<ul>
												<li><b>AGF 3D (recommended):</b> <a href="http://lwjgl.org/update">http://lwjgl.org/update</a></li>
												<li>AMF for Ascape (optional): <a href="http://ascape.sourceforge.net/eclipse">http://ascape.sourceforge.net/eclipse</a></li>
												<li>AMF for Repast (challenging): <a href="http://mirror.anl.gov/pub/repastsimphony/site.xml">http://mirror.anl.gov/pub/repastsimphony/site.xml</a>
												(non P2)</li>
								</ul>
								<img src="../images/AMPInstallLWJGL.png" /></li>
								<li><b>Add AMP Update Site</b>
								<p>Enter one of the following URLs in the "Work with:" box and press enter.</p>
								<ul>
												<li><b>Release (recommended for new users)</b>: <a
																href="http://download.eclipse.org/amp/updates/releases">http://download.eclipse.org/amp/updates/releases</a></li>
												<li>Milestones (recommended for seasoned users): <a
																href="http://download.eclipse.org/amp/updates/milestones">http://download.eclipse.org/amp/updates/milestones</a></li>
												<li>Interim (most recent features): <a href="http://download.eclipse.org/amp/updates/interim">http://download.eclipse.org/amp/updates/interim</a></li>
												<li>Nightly (bleeding edge, useful for troubleshooting): <a
																href="http://download.eclipse.org/amp/updates/nightly">http://download.eclipse.org/amp/updates/nightly</a></li>
								</ul>
								</li>
				</ul>
				</li>
				<li><b>Install desired features.</b>
				<p>Just select the Agent Modeling category plus any of the features in the Agent Modeling Extensions category
				that you've added external sites for.*** For most users, the selections shown below are recommended. Just make your
				selection, click the <b>Next</b> button and follow the remaining prompts.</p>
				<img src="../images/AMPInstall.png" /></li>
</ol>
<p><small>* It is possible that some AMP components will function in earlier versions of Eclipse, but this
usage isn't recommended or supported.</small></p>
<p><small>** It is not neccessary to actually install the features, just add the update site. It usually
works better to enter all of the update sites first, and then select all of the features you will need. But if you run
into issues, try installing the features in the "Agent Modeling" category only into a fresh Eclipse install..</small></p>
<p><small>**We recommend installing the LWJGL libraries and AGF3D as AGF3D adds important capabilities to
Escape. On the other hand, you should only install the Repast extensions if you are planning on using Repast actively,
as it currently carries a large number of dependencies of its own. Finally note that the Ascape target allows execution
of models externally using the original Ascape Swing User Interface. If you want to run models written for the Ascape
API using the Eclipse hosted Escape environment, you do not need this feature.</small></p>
