diff --git a/development/miscdocuments/Server Tools API Branch.html b/development/miscdocuments/Server Tools API Branch.html
new file mode 100644
index 0000000..0058c33
--- /dev/null
+++ b/development/miscdocuments/Server Tools API Branch.html
@@ -0,0 +1,143 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css">
+<title>Server Tools API Branch</title>
+</head>
+
+<body>
+
+<body alink="#ff0000" bgcolor="#ffffff" link="#0000ee" text="#000000" vlink="#551a8b">
+
+<table border="0" cellpadding="2" cellspacing="5" width="100%">
+  <tbody><tr>
+ 		<TD WIDTH=60%>
+			<P ALIGN=LEFT><B><FONT SIZE=6><FONT FACE="Verdana, Arial, Helvetica, sans-serif">Server Tools API Branch</FONT></FONT></B><BR>
+			<FONT SIZE=1><FONT FACE="Arial, Helvetica, sans-serif"><FONT COLOR="#8080ff">Information on the Server Tools API Branch</FONT></FONT></FONT>
+			</P>
+		</TD>
+    <td rowspan="2" width="19%"><img src="http://www.eclipse.org/images/Idea.jpg" border="0" height="86" width="120"></td>
+  </tr>
+</tbody></table>
+
+<table border="0" cellpadding="2" cellspacing="5" width="100%">
+  <tbody><tr> 
+    <td colspan="2" align="left" bgcolor="#0080c0" valign="top"><b><font color="#ffffff" face="Arial,Helvetica">Changes</font></b></td>
+  </tr></tbody>
+</table>
+
+This document contains information on the Server Tools API changes that have gone
+into the Server Tools API Branch for M2.
+
+<p/>
+
+<table border=1>
+<tr>
+  <th>Change</th>
+  <th>Reason</th>
+  <th>Old Code</th>
+  <th>New Code</th>
+</tr>
+<tr>
+  <td>All java.util.Lists returned from methods have been changed to arrays of the corresponding
+      content type.</td>
+  <td>Stronger typed return values are safer, and returning a copy of the list (instead of the list
+      itself) blocks against clients modifying internal data structures.</td>
+  <td>List list = ServerCore.getRuntimeTypes();</td>
+  <td>IRuntimeType[] rt = ServerCore.getRuntimeTypes();</td>
+</tr>
+<tr>
+  <td>IResourceManager has been removed. Most of it's methods have been moved to the ServerCore
+      class, with the remaining ones in ServerUtil.</td>
+  <td>There was no client benefit of the resource manager, and it was misnamed.</td>
+  <td>ServerCore.getResourceManager().getServers();</td>
+  <td>ServerCore.getServers();</td>
+</tr>
+<tr>
+  <td>All extension point interfaces have been changed to abstract classes, and the "I" removed
+    from the name.</td>
+  <td>Allows for future support and maintenance without breaking existing interfaces.</td>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td>Several interfaces were moved from the .core.model package to .core.</td>
+  <td>The .core.model package was meant for SPIs, not API. All API classes & interfaces will
+      be moved or remain in .core so that API users do not need to use the .core.model package.</td>
+  <td>import org.eclipse.wst.server.code.model.IModule;</td>
+  <td>import org.eclipse.wst.server.code.IModule;</td>
+</tr>
+<tr>
+  <td>IServerResourceListener renamed to IServerLifecycleListener. Several methods moved out to
+      new IRuntimeListener and IServerConfigurationListener interfaces.</td>
+  <td>"Resource" had to be removed from the name, and the interface contained methods for
+      runtimes and server configurations as well. They are split up so that API users do not
+      need to listen for all types of changes from a single interface.</td>
+  <td>ServerCore.getResourceManager().addServerResourceListener(myListener);</td>
+  <td>ServerCore.addRuntimeLifecycleListener(myListener);</td>
+</tr>
+<tr>
+  <td>Publishing interfaces completely rewritten & .core.resources package removed.</td>
+  <td>The publishing interface was outdated and written before the Eclipse team support,
+      ANT, or other recent publishing methods had been developed. The new API allows for
+      better support and for each server type to use it's own publishing mechanism.</td>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td>IRuntimeDelegate and IRuntimeWorkingCopyDelegate merged into a single RuntimeDelegate.
+      IServerConfigurationDelegate and IServerConfigurationWorkingCopyDelegate merged into a
+      single ServerConfigurationDelegate.</td>
+  <td>Making clients provide two separate classes for the delegates was excessive,
+      unnecessary, and ended up with too many SPI classes. Only a single delegate class is
+      now required for these extension points.</td>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td>IRuntime.getDelegate(), IRuntime.getWorkingCopyDelegate() changed into IRuntime extending
+      IAdaptable.</td>
+  <td>**. Clients should still remember that calling this method may involve plugin loading, so
+      it should not be used in popup menus, etc.</td>
+  <td>ITomcatRuntime tr = (ITomcatRuntime) runtime.getDelegate();</td>
+  <td>ITomcatRuntime tr = (ITomcatRuntime) runtime.getAdapter(ITomcatRuntime.class);</td>
+</tr>
+<tr>
+  <td>IModuleType and IModuleKind interfaces merged.</td>
+  <td>IModuleKind was created late in the previous release cycle and couldn't be merged at the
+      time it was created.</td>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td>IServerTask changed and IModuleTask removed.</td>
+  <td>The existing interfaces had an ITask directly returned as a delegate, and only allowed a
+      single task per extension point. The new IServerTask allows the delegate to return multiple
+      tasks from a single extension point, and it is not itself a task.</td>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td></td>
+  <td></td>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td>Various minor cleanup - methods renamed, parameters changed, etc.</td>
+  <td>Cleanup and future maintenance.</td>
+  <td></td>
+  <td></td>
+</tr>
+<tr>
+  <td></td>
+  <td></td>
+  <td></td>
+  <td></td>
+</tr>
+</table>
+
+</body>
+</html>
