diff --git a/_projectCommon.php b/_projectCommon.php
new file mode 100644
index 0000000..04a42c9
--- /dev/null
+++ b/_projectCommon.php
@@ -0,0 +1,24 @@
+<?php
+
+/*******************************************************************************
+ * Copyright(c) 2015 Eclipse Foundation and others.
+ * 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://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
+ *******************************************************************************/
+
+	# Set the theme for your project's web pages.
+	# See the Committer Tools "How Do I" for list of themes
+	# https://dev.eclipse.org/committers/
+	# Optional: defaults to system theme
+$theme = "solstice";
+$App->Promotion = FALSE;
+
+$App->setOutDated( '2011-11-11', '<a href="https://projects.eclipse.org/releases/indigo">Indigo</a> is a past version of Eclipse. Please visit our <a href="/downloads/">download</a> page for the latest version of Eclipse. ' );
+
+?>
\ No newline at end of file
diff --git a/content/en_friends.php b/content/en_friends.php
new file mode 100644
index 0000000..c5e0f35
--- /dev/null
+++ b/content/en_friends.php
@@ -0,0 +1,92 @@
+<?php
+/*******************************************************************************
+ * Copyright(c) 2015 Eclipse Foundation and others.
+ * 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://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
+ *******************************************************************************/
+?>
+<div class="col-md-24">
+  <div id="fullcolumn" class="indigo">
+    <a href="/indigo"><img id="indigoLogo" src="images/indigologo.png" /></a>
+    <div id="container">
+
+      <div id="nav">
+        <ul>
+          <li><a href="/downloads/packages/release/indigo/sr2">Downloads</a></li>
+          <li><a href="/indigo/projects.php">Projects</a></li>
+          <li><a
+            href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">DemoCamps</a></li>
+          <li class="last active"><a href="/indigo/friends.php">The
+              Indigo 500</a></li>
+        </ul>
+      </div>
+      <div id="window">
+        <div class="wantedDesc main">
+          <h1 class="wanted">The Indigo 500</h1>
+          <div class="wrapper">
+            <p>
+              Millions of people use Eclipse. <a href="/donate/">Friends
+                of Eclipse</a> allows you to contribute back to the
+              Eclipse community. To celebrate the upcoming Indigo
+              Release Train we want to recruit 500 new Friends of
+              Eclipse.
+            </p>
+          </div>
+          <div class="wrapper">
+            <p>
+              For a US$35 contribution, you can become a Friend of
+              Eclipse. As a special thank you, Friends will get early
+              access to the <a href="/indigo/">Indigo release</a>,
+              direct from the download server at the Eclipse Foundation.
+              Your contribution will also help support the Eclipse
+              community.
+            </p>
+          </div>
+          <div class="wrapper spacing">
+            <div class="star">
+              <img src='images/icons/star.png' />
+            </div>
+            <a class="donate" href="/donate">Donate Now!</a>
+          </div>
+          <div class="progressBar">
+            <div class="progress" style="width: 169px">&nbsp;</div>
+            <div class="counter">
+              <span class="active">86</span> / 500 friends recruited.
+            </div>
+          </div>
+
+        </div>
+        <div class="wantedDesc recent">
+          <h3>Recent Friends</h3>
+          <ul class="donorList clearfix">
+            <li>Anonymous - $50</li>
+            <li>Chris Charlton - $35</li>
+            <li>Anonymous - $35</li>
+            <li>Anonymous - $35</li>
+            <li>Anonymous - $40</li>
+            <li>Anonymous - $50</li>
+            <li>Anonymous - $35</li>
+            <li>Cho Hyunjong - $35</li>
+          </ul>
+          <div class="more">
+            <a href="/donate/donorlist.php?showAll=0">More</a>
+          </div>
+        </div>
+        <p class="legal">[1] Friends of Eclipse get special access to
+          the Eclipse Foundation download server. This server will be
+          available to Friends of Eclipse while the download packages
+          are being synchronized to our mirrors. This typically means
+          the packages will be available up to 24 hrs before everyone
+          else. The Eclipse Foundation will also be dedicating extra
+          bandwidth to this download server, so Friends should
+          experience a faster download.</p>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/content/en_index.php b/content/en_index.php
new file mode 100644
index 0000000..09405d9
--- /dev/null
+++ b/content/en_index.php
@@ -0,0 +1,68 @@
+<?php
+/*******************************************************************************
+ * Copyright(c) 2015 Eclipse Foundation and others.
+ * 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://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
+ *******************************************************************************/
+?>
+<div class="col-md-24">
+  <div id="fullcolumn" class="indigo">
+    <a href="/indigo/"><img id="indigoLogo"
+      src="/indigo/images/indigologo.png" /></a>
+    <div id="container">
+
+      <div id="nav">
+        <ul>
+          <li><a href="/downloads/packages/release/indigo/sr2">Downloads</a></li>
+          <li><a href="/indigo/projects.php">Projects</a></li>
+          <li><a
+            href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">DemoCamps</a></li>
+          <li class="last"><a href="/indigo/friends.php">The Indigo 500</a></li>
+        </ul>
+      </div>
+      <div id="window">
+        <div class="whiteout">
+          <p class="bang">
+            <img class="bang" src="/indigo/images/bang.png" />
+          </p>
+          <p class="indigo">
+            Indigo is the annual release of Eclipse projects on
+            June&nbsp;22&nbsp;2011; <br />this year 62 project teams are
+            part of the release.
+          </p>
+        </div>
+        <h4 class="highlights">Highlights</h4>
+        <ul id="ticker">
+          <li><a href="http://www.eclipse.org/egit">EGit 1.0</a>
+            provides tight integration with the Git version control
+            system.</li>
+          <li><a href="http://www.eclipse.org/windowbuilder">WindowBuilder</a>,
+            a popular GUI builder for Eclipse developers, is now open
+            source and part of Indigo</li>
+          <li>Drag to Install support with <a
+            href="http://www.eclipse.org/mpc">Eclipse Marketplace Client</a>.
+          </li>
+          <li>Better integration with <a
+            href="http://www.eclipse.org/m2e/">Maven</a>, including
+            starting Maven builds and maintaining pom files.
+          </li>
+          <li><a href="http://www.eclipse.org/jubula">Jubula</a>
+            provides automated functional GUI testing for Java and HTML.</li>
+          <li><a href="http://www.eclipse.org/xtext">Xtext</a> 2.0 makes
+            it even easier to create domain specific languages.</li>
+        </ul>
+
+        <span class="train"><a style="color: #FFF;" href="/home">Click
+            here to continue to Eclipse.org</a>
+          </p></span>
+      </div>
+    </div>
+  </div>
+
+</div>
\ No newline at end of file
diff --git a/content/en_projects.php b/content/en_projects.php
new file mode 100644
index 0000000..2f05529
--- /dev/null
+++ b/content/en_projects.php
@@ -0,0 +1,478 @@
+<?php
+/*******************************************************************************
+ * Copyright(c) 2015 Eclipse Foundation and others.
+ * 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://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
+ *******************************************************************************/
+?>
+<div class="col-md-24">
+  <div id="fullcolumn" class="indigo">
+    <a href="/indigo"><img id="indigoLogo" src="images/indigologo.png" /></a>
+    <div id="container">
+      <div id="nav">
+        <ul>
+          <li><a href="/downloads/packages/release/indigo/sr2">Downloads</a></li>
+          <li><a class="active" href="/indigo/projects.php">Projects</a></li>
+          <li><a
+            href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">DemoCamps</a></li>
+          <li class="last"><a href="/indigo/friends.php">The Indigo 500</a></li>
+        </ul>
+      </div>
+      <div id="window" class="overflow">
+        <table class="projects">
+          <tr class="header">
+            <td width="35%">Project Name</td>
+            <td width="12%" align="center">Version</td>
+            <td width="12%" align="center">Download</td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/actf/">Accessibility
+                  Tools Framework</a></b></td>
+            <td align="center">0.9.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/actf/downloads/index.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://eclipse.org/amp">Agent Modeling
+                  Platform [new]</a></b></td>
+            <td align="center">0.9.0</td>
+            <td align="center"><a
+              href="http://eclipse.org/amp/installing/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/modeling/amalgam">Amalgamation</a></b></td>
+            <td align="center">1.2.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/downloads/packages/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/atl/">ATL</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://eclipse.org/mmt/downloads/?project=atl"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/birt/">Business
+                  Intelligence and Reporting Tools (BIRT)</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://download.eclipse.org/birt/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/cdt">C/C++
+                  Development Tooling (CDT)</a></b></td>
+            <td align="center">8.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/cdt/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/cdo">CDO Model
+                  Repository</a></b></td>
+            <td align="center">4.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/cdo/downloads"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/datatools/">Data
+                  Tools Platform</a></b></td>
+            <td align="center">1.9.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/datatools/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/dltk/">Dynamic
+                  Languages Toolkit</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://download.eclipse.org/technology/dltk/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/ecf">Eclipse
+                  Communication Framework</a></b></td>
+            <td align="center">3.5.1</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/ecf/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/egf">Eclipse
+                  Generation Factories (EGF) [new]</a></b></td>
+            <td align="center">0.5.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/downloads/download.php?file=/egf/tool/egf_1.0.0RC2/org.eclipse.egf_1.0.0.v20120528-1601.zip"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/egit/">Eclipse Git
+                  Team Provider</a></b></td>
+            <td align="center">1.0.0</td>
+            <td align="center"><a
+              href="http://eclipse.org/egit/download"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/gyrex/">Eclipse Gyrex
+                  Project [new]</a></b></td>
+            <td align="center">0.10.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/gyrex/download/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/epp/">Eclipse
+                  Packaging Project</a></b></td>
+            <td align="center">1.4.0</td>
+            <td align="center"><a href="/downloads/packages/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/eclipse/">Eclipse
+                  Project</a></b></td>
+            <td align="center">4.1.0,&nbsp;3.7.0</td>
+            <td align="center"><a
+              href="http://download.eclipse.org/eclipse/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://eclipse.org/rtp">Eclipse Runtime
+                  Packaging Project [new]</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://eclipse.org/rtp/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/scout">Eclipse Scout
+                  [new]</a></b></td>
+            <td align="center">3.7.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/scout/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/webtools/">Eclipse
+                  Web Tools Platform Project</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://download.eclipse.org/webtools/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/eclipselink/">EclipseLink
+                  Project</a></b></td>
+            <td align="center">2.3.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/eclipselink/downloads/index.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="/modeling/emf/?project=emf">EMF</a></b></td>
+            <td align="center">2.7.0</td>
+            <td align="center"><a
+              href="/modeling/emf/downloads/?project=emf"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/modeling/emft/facet/">EMF
+                  Facet [new]</a></b></td>
+            <td align="center">0.1.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/emft/facet/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a
+                href="http://www.eclipse.org/modeling/emf/?project=query2">EMF
+                  Query</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/emf/downloads/?project=query"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a
+                href="http://www.eclipse.org/modeling/emf/?project=transaction">EMF
+                  Transaction</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/emf/downloads/?project=transaction"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a
+                href="http://www.eclipse.org/modeling/emf/?project=validation">EMF
+                  Validation</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/emf/downloads/?project=validation"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://eclipse.org/equinox">Equinox</a></b></td>
+            <td align="center">3.7.0</td>
+            <td align="center"><a
+              href="http://download.eclipse.org/equinox/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a
+                href="http://www.eclipse.org/modeling/emft/?project=eef">Extended
+                  Editing Framework (EEF)</a></b></td>
+            <td align="center">1.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/emft/downloads/?project=eef"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/gef">Graphical
+                  Editing Framework (GEF)</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/gef/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/jgit/">Java
+                  implementation of Git</a></b></td>
+            <td align="center">1.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/jgit/download/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/jwt/">Java Workflow
+                  Tooling</a></b></td>
+            <td align="center">1.1.0</td>
+            <td align="center"><a
+              href="http://wiki.eclipse.org/JWT_Downloads#Current_Releases"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/jetty/">Jetty -
+                  Servlet Engine and Http Server</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/jetty/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/jubula/">Jubula
+                  Functional Testing Tool [new]</a></b></td>
+            <td align="center">1.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/jubula/download.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/linuxtools/">Linux
+                  Tools</a></b></td>
+            <td align="center">0.8.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/linuxtools/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="/mpc">Marketplace Client</a></b></td>
+            <td align="center">1.1.0</td>
+            <td align="center"></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/m2e/">Maven
+                  Integration [new]</a></b></td>
+            <td align="center">1.0.0</td>
+            <td align="center"><a
+              href="http://eclipse.org/m2e/download/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="/modeling/mdt/?project=uml2">MDT UML2</a></b></td>
+            <td align="center">3.2.0</td>
+            <td align="center"><a
+              href="/modeling/mdt/downloads/?project=uml2"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a
+                href="http://www.eclipse.org/modeling/mdt/?project=xsd">MDT
+                  XSD (XML Schema Definition)</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/mdt/downloads/?project=xsd"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/mat">Memory Analyzer</a></b></td>
+            <td align="center">1.1.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/mat/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/mtj/">Mobile Tools
+                  for Java</a></b></td>
+            <td align="center">1.2.0</td>
+            <td align="center"><a
+              href="http://download.eclipse.org/dsdp/mtj/downloads/index.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a
+                href="http://www.eclipse.org/modeling/emft/?project=mwe">Modeling
+                  Workflow Engine</a></b></td>
+            <td align="center">2.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/emft/downloads/?project=mwe"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/MoDisco/">MoDisco</a></b></td>
+            <td align="center">0.9.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/MoDisco/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/mylyn/">Mylyn</a></b></td>
+            <td align="center">3.6.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/mylyn/downloads"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/objectteams/">Object
+                  Teams [new]</a></b></td>
+            <td align="center">2.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/objectteams/download.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/modeling/mdt/ocl">OCL
+                  (Object Constraint Language)</a></b></td>
+            <td align="center">3.1.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/mdt/downloads/?project=ocl"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="/papyrus">Papyrus</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/mdt/papyrus/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="/ptp">Parallel Tools Platform (PTP)</a></b></td>
+            <td align="center">5.0.0</td>
+            <td align="center"><a href="/ptp/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/pdt/">PHP Development
+                  Tools</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://download.eclipse.org/tools/pdt/downloads/index.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/mmt/qvto">QVT
+                  Operational</a></b></td>
+            <td align="center"></td>
+            <td align="center"><a
+              href="http://www.eclipse.org/mmt/downloads/index.php?project=qvto&showAll=0&showMax=5"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://eclipse.org/rap">Remote Application
+                  Platform</a></b></td>
+            <td align="center">1.4.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/rap/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/riena">Riena Project</a></b></td>
+            <td align="center">3.0.0</td>
+            <td align="center"><a
+              href="http://wiki.eclipse.org/Riena_Getting_started"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/soa/sca/index.php">SCA
+                  Tools</a></b></td>
+            <td align="center">2.2.0</td>
+            <td align="center"><a
+              href="http://wiki.eclipse.org/SCA#Install"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/sequoyah">Sequoyah</a></b></td>
+            <td align="center">2.0.0</td>
+            <td align="center"><a href="/sequoyah/downloads/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/subversive/">Subversive
+                  - SVN Team Provider</a></b></td>
+            <td align="center">0.7.9</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/subversive/downloads.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://wiki.eclipse.org/TCF">Target
+                  Communication Framework</a></b></td>
+            <td align="center"></td>
+            <td align="center"></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/tm/">Target
+                  Management</a></b></td>
+            <td align="center">3.3.0</td>
+            <td align="center"><a
+              href="http://download.eclipse.org/tm/downloads/index.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/windowbuilder/">WindowBuilder
+                  [new]</a></b></td>
+            <td align="center">1.0.0</td>
+            <td align="center"><a href="/windowbuilder/download.php"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/modeling/m2t/xpand">Xpand</a></b></td>
+            <td align="center">1.1.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/modeling/m2t/downloads/?showAll=0&project=xpand"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+          <tr class="tableRow">
+            <td><b><a href="http://www.eclipse.org/Xtext/">Xtext</a></b></td>
+            <td align="center">2.0.0</td>
+            <td align="center"><a
+              href="http://www.eclipse.org/Xtext/download/"><img
+                src="http://dev.eclipse.org/small_icons/actions/go-bottom.png" /></a></td>
+          </tr>
+
+        </table>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/friends.php b/friends.php
index 12ec11b..bd3e57d 100644
--- a/friends.php
+++ b/friends.php
@@ -1,71 +1,35 @@
-<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
+<?php
 /*******************************************************************************
- * Copyright (c) 2009-2010 Eclipse Foundation and others.
+ * Copyright(c) 2015 Eclipse Foundation and others.
  * 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
+ * http://eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
  *******************************************************************************/
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
 
-	#
-	# Begin: page-specific settings.  Change these. 
-	$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
-	$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
-	$pageAuthor		= "Nathan Gervais";
-	include('scripts/friendsFunctions.php');		
-	# Paste your HTML content between the EOHTML markers!	
-	ob_start();
-	?>
-	<div id="fullcolumn" class="indigo">
-		<a href="/indigo"><img id="indigoLogo" src="images/indigologo.png"/></a>
-		<div id="container">
-		
-			<div id="nav">
-				<ul>
-					<li><a href="/downloads/">Downloads</a></li>
-					<li><a href="/indigo/projects.php">Projects</a></li>
-					<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">DemoCamps</a></li>					
-					<li class="last active"><a href="/indigo/friends.php">The Indigo 500</a></li>
-				</ul>
-			</div>
-			<div id="window">
-				<div class="wantedDesc main">
-					<h1 class="wanted">The Indigo 500</h1>
-					<div class="wrapper">
-						<p>Millions of people use Eclipse. <a href="/donate/">Friends of Eclipse</a> allows you to contribute back to the Eclipse community.   To celebrate the upcoming Indigo Release Train we want to recruit 500 new Friends of Eclipse.</p>
-					</div>
-					<div class="wrapper">
-						<p>For a US$35 contribution, you can become a Friend of Eclipse.  As a special thank you, Friends will get early access to the <a href="/indigo/">Indigo release</a>, direct from the download server at the Eclipse Foundation.  Your contribution will also help support the Eclipse community.</p>
-					</div>
-					<div class="wrapper spacing">
-						<div class="star"><img src='images/icons/star.png'/></div>	
-						<a class="donate" href="/donate">Donate Now!</a>
-					</div>
-					<div class="progressBar">
-						<div class="progress" style="width:<?=round(getWantedCount() * (980/500));?>px">&nbsp;</div>
-						<div class="counter"><span class="active"><?=getWantedCount();?></span> / 500 friends recruited.</div>
-					</div>				
+$App = new App();
+$Nav = new Nav();
+$Menu = new Menu();
+include($App->getProjectCommon()); // All on the same line to unclutter the user's desktop'
 
-				</div>
-				<div class="wantedDesc recent">					
-					<h3>Recent Friends</h3>
-					<ul class="donorList clearfix"><?=sideDonorList(8);?></ul>
-					<div class="more"><a href="/donate/donorlist.php?showAll=0">More</a></div>
-				</div>
-					<p class="legal" >
-						[1] Friends of Eclipse get special access to the Eclipse Foundation download server.  This server will be available to Friends of Eclipse while the download packages are being synchronized to our mirrors.  This typically means the packages will be available up to 24 hrs before everyone else.   The Eclipse Foundation will also be dedicating extra bandwidth to this download server, so Friends should experience a faster download.
-					</p>				
-			</div>
-		</div>
-	</div>
-	<?
-	$html = ob_get_clean();
 
-	# Generate the web page
-	$App->Promotion = TRUE;
-	$App->AddExtraHtmlHeader('<link type="text/css" href="/indigo/style.css" rel="stylesheet"/>');	
-	$App->generatePage('Nova', $Menu, NULL , $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
+// Begin: page-specific settings. Change these.
+$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
+$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
+$pageAuthor		= "Nathan Gervais";
+
+// Place your html content in a file called content/en_pagename.php
+ob_start();
+include("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
+
+# Generate the web page
+$App->AddExtraHtmlHeader('<link type="text/css" href="/indigo/style.css" rel="stylesheet"/>');
+$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
diff --git a/highlights.php b/highlights.php
deleted file mode 100644
index 377b899..0000000
--- a/highlights.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-$items =  file("highlights.txt");
-print "[";
-
-
-	$first = true;
-	for($i=0;$i<count($items);$i++){
-		if($first == TRUE){
-			$first = FALSE;
-			print '"';
-		}
-		else { print ',"'; }
-		print addcslashes($items[$i], "\\\"\n\r\t/") . '"';
-	}
-	
-print "]";
diff --git a/highlights.txt b/highlights.txt
deleted file mode 100644
index 8ed3a8b..0000000
--- a/highlights.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-<a href="http://www.eclipse.org/egit">EGit 1.0</a> provides tight integration with the Git version control system.
-<a href="http://www.eclipse.org/windowbuilder">WindowBuilder</a>, a popular GUI builder for Eclipse developers, is now open source and part of Indigo
-Drag to Install support with <a href="http://www.eclipse.org/mpc">Eclipse Marketplace Client</a>.
-Better integration with <a href="http://www.eclipse.org/m2e/">Maven</a>, including starting Maven builds and maintaining pom files.
-<a href="http://www.eclipse.org/jubula">Jubula</a> provides automated functional GUI testing for Java and HTML.
-<a href="http://www.eclipse.org/xtext">Xtext</a> 2.0 makes it even easier to create domain specific languages.
\ No newline at end of file
diff --git a/index.php b/index.php
index 6191be0..f8fe045 100644
--- a/index.php
+++ b/index.php
@@ -1,87 +1,36 @@
-<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
+<?php
 /*******************************************************************************
- * Copyright (c) 2009-2010 Eclipse Foundation and others.
+ * Copyright(c) 2015 Eclipse Foundation and others.
  * 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
+ * http://eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
  *******************************************************************************/
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
 
-	#
-	# Begin: page-specific settings.  Change these. 
-	$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
-	$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
-	$pageAuthor		= "Nathan Gervais";
-		
-	# Paste your HTML content between the EOHTML markers!	
-	ob_start();
-	?>
-	<div id="fullcolumn" class="indigo">
-		<a href="/indigo/"><img id="indigoLogo" src="/indigo/images/indigologo.png"/></a>
-		<div id="container">
-		
-			<div id="nav">
-				<ul>
-					<li><a href="/downloads/packages/release/indigo/sr2">Downloads</a></li>
-					<li><a href="/indigo/projects.php">Projects</a></li>
-					<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">DemoCamps</a></li>
-					<li class="last"><a href="/indigo/friends.php">The Indigo 500</a></li>
-				</ul>
-			</div>
-			<div id="window">
-			<div class="whiteout"><p class="bang"><img class="bang" src="/indigo/images/bang.png"/></p>
-			<p class="indigo">Indigo is the annual release of Eclipse projects on June&nbsp;22&nbsp;2011; <br/>this year 62 project teams are part of the release.</p> 
-					</div>
-				<h4 class="highlights">Highlights</h4>
-				<ul id="ticker"></ul>
-				<ul id="hide"></ul>
-			
-				<span class="train"><a style="color:#FFF;" href="/home">Click here to continue to Eclipse.org</a> </p></span>
-			</div>
-		</div>
-	</div>
-	
-	<script>
-	var t = 0;
-	var s = 4;
-	var interval = 5000;
-	var c = 0;
-	$.getJSON('/indigo/highlights.php', function (data) {
-		var ul = $('<ul/>');
-		var tul = $('<ul/>');
-		$.each(data, function(key, val) {
-			c++;
-			if (c <= s) {
-				$('<li/>', { html: val, }).appendTo(tul);
-			}
-			$('<li/>', { text: val, }).appendTo(ul);
-		});
-		
-		$('#hide').append(ul.contents());
-		$('#ticker').append(tul.contents());
-	})
-	.error(function() { alert('invalid'); }
-	);
-	t = setTimeout(tick, interval);
-	function tick() {
-		smoothAdd('ticker',$('#hide li:last').text());
-		$('#hide').prepend($('#hide li:last'));
-				
-		t = setTimeout(tick, interval);
-	}
-	</script>
-		
-	
-	<?
-	$html = ob_get_clean();
+$App = new App();
+$Nav = new Nav();
+$Menu = new Menu();
+include($App->getProjectCommon()); // All on the same line to unclutter the user's desktop'
 
-	# Generate the web page
-	$App->Promotion = TRUE;
-	$App->AddExtraHtmlHeader('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js"></script>');
-	$App->AddExtraHtmlHeader('<script type="text/javascript" src="/indigo/scripts/smooth-add.js"></script>');
-	$App->AddExtraHtmlHeader('<link type="text/css" href="/indigo/style.css" rel="stylesheet"/>');	
-	$App->generatePage('Nova', $Menu, NULL , $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
+
+// Begin: page-specific settings. Change these.
+$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
+$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
+$pageAuthor		= "Nathan Gervais";
+
+// Place your html content in a file called content/en_pagename.php
+ob_start();
+include("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
+
+# Generate the web page
+$App->AddExtraHtmlHeader('<link type="text/css" href="/indigo/style.css" rel="stylesheet"/>');
+$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
diff --git a/planning/EclipseSimultaneousRelease.html b/planning/EclipseSimultaneousRelease.html
deleted file mode 100644
index d323858..0000000
--- a/planning/EclipseSimultaneousRelease.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!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>The Eclipse Simultaneous Release</title>
-</head>
-<body>
-<h1 style="text-align: center">The Eclipse Simultaneous Release</h1>
-<h1 style="text-align: center; font-size: smaller">December 1, 2010<br />
-<a href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
-Council</a><br />
-Contact: <a href="mailto: david.williams@eclipse.org">David Williams</a></h1>
-
-<p>Note that as of Juno, around October, 2011, this document was moved to the
-Eclipse wiki. For latest content, please 
-find at <a href="http://wiki.eclipse.org/SimRel/Simultaneous_Release_Requirements">Eclipse Simultaneious Release Requirements</a>.</p>
-
-<p>If for some historical reason, the original document is required, see 
-<a href="EclipseSimultaneousReleaseOLD.php">EclipseSimultaneousReleaseOLD</a></p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/planning/EclipseSimultaneousRelease.php b/planning/EclipseSimultaneousRelease.php
deleted file mode 100644
index a0d2a19..0000000
--- a/planning/EclipseSimultaneousRelease.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
-//ini_set("display_errors", "true");
-//error_reporting (E_ALL);
-
-#
-# Begin: page-specific settings.
-$pageTitle 		= "Eclipse Planning Council";
-//$pageKeywords	= "Eclipse Planning Council Simultaneous Release Requirements and must-dos";
-$pageAuthor		= "David Williams";
-$theme = "Nova";
-
-
-# Paste your HTML content between the markers!
-ob_start();
-?>
-
-	
-<div id="maincontent" style="padding: 5em; width: 90%; margins: 5%;">
-
-
-
-<?php 
-    $xhtmlFile = 'EclipseSimultaneousRelease.html';
-	// Load the source. Will treat as "raw" XHMTL for now
-	//$doc = new DOMDocument;
-	//$doc->loadHTMLFile($xhtmlFile);
-	//echo $doc->saveHTML();
-	echo file_get_contents($xhtmlFile);
-?>
-
-
-</div>
-
-<?php
-$html = ob_get_contents();
-ob_end_clean();
-
-# Generate the web page
-$App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
-
-?>
\ No newline at end of file
diff --git a/planning/EclipseSimultaneousReleaseOLD.html b/planning/EclipseSimultaneousReleaseOLD.html
deleted file mode 100644
index c5a7f7a..0000000
--- a/planning/EclipseSimultaneousReleaseOLD.html
+++ /dev/null
@@ -1,453 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!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>The Eclipse Simultaneous Release</title>
-</head>
-<body>
-<h1 style="text-align: center">The Eclipse Simultaneous Release</h1>
-<h1 style="text-align: center; font-size: smaller">December 1, 2010<br />
-<a href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
-Council</a><br />
-Contact: <a href="mailto: david.williams@eclipse.org">David Williams</a></h1>
-
-<p>Note that as of Juno, around October, 2011, this document was moved to the
-Eclipse wiki. For latest content, please 
-find at <a href="http://wiki.eclipse.org/SimRel/Simultaneous_Release_Requirements">Eclipse Simultaneious Release Requirements</a>.</p>
-
-
-<p>This document defines the rules and criteria for participating in
-the yearly Simultaneous Release. There are more criteria than when
-releasing at other times partially because there are more projects
-releasing at once, so the workload needs to streamlined and made more
-uniform. More important, the extra criteria are included by mutual
-agreement between projects (via their representatives to Planning
-Council) so that as a whole, the release will be of better quality,
-maintainability, and improved consumability by adopters.</p>
-<p>The spirit of this document should not be so much as a "contract"
-of what has to be done to release, but instead as an agreement to make
-the Yearly Release good, if not great! While each Project does their
-individual things to make the Release great, this document and process
-describe how we as a group document the achievement of our agreement. We
-are always open to better agreements and better documentation of our
-achievements so feel free to keep track and make suggestions
-year-to-year (preferably through your Planning Council representative)
-on how to make our yearly release better. In fact, occasionally changes
-may be made to this document for clarity or to improve reference links
-throughout the development cycle, but nothing new that would change
-work-load will be added after M4.</p>
-<p>To foster communication and flexibility where required, any
-exceptions to these criteria or deadlines will follow the <a
-	href="#pcExceptionProcess">Planning Council Exception Process</a>.</p>
-<p>The requirements are divided into three categories:</p>
-<ol>
-	<li>Requirements to be released as part of the &quot;yearly
-	release&quot;, normal release requirements, done earlier than usual.</li>
-	<li>Requirements to be part of the Common Discovery Site
-	repository and, consequently, the minimum requirements to be part of
-	EPP packages.</li>
-	<li>Requirements to demonstrate good Eclipse Citizenship,
-	following &quot;the Eclipse Way&quot;.</li>
-</ol>
-
-<h2>Do the basics ... early</h2>
-<p>The requirements and conditions stated in this section are the
-basic minimum required for a project to claim they are part of the
-yearly Simultaneous Release.</p>
-<p>To join a Simultaneous Release, Projects must have stated their
-intent to do so, and be in a build for the composite site aggregation by
-M4, at the latest. For projects continuing from previous years, the
-expectation is they will be in M1, unless they formally withdraw.</p>
-<p>The &quot;statement of intent&quot; is done formally by marking
-the &quot;Simultaneous Release Flag&quot; in the project's Portal
-meta-data.</p>
-<h3>Planning</h3>
-<p>All projects must have their project plan in the Eclipse
-Foundation standard XML Format (a normal Eclipse requirement).
-Committing to be in the Simultaneous Release means you commit to having
-these plans early: M2, for those projects that already know they will be
-in the Simultaneous Release, M4 will be the latest possible time, for
-those projects that are new to the Simultaneous Release Train and decide
-to join after M2. The plans should be updated periodically as things
-change, or as items are completed.</p>
-<p>Also, for long term planning, remember that being in a
-Simultaneous Release also means a commitment to participating the SR1
-and SR2 simultaneous maintenance releases.</p>
-<p><b>Joining implies continuous participation. </b> After a
-release, there are two follow on activities that must be planned for.
-First is that releases maintenance stream. The second is the subquent
-year's release. In both cases, it is (as always) up to the project to
-decide what to fix or what to enhance, but being part of the train
-implies you will always be able to build, in maintenance and in the
-subsequent release's milestone builds. Sometimes this means simply
-leaving repositories intact, etc., but occasionally projects may need to
-fix "prereqs" or similar. Put another way, being part of the
-Simultaneous Release is not a &quot;one time&quot; activity, covering
-only the literal release date and not even a &quot;part time&quot;
-activity covering only part of the yearly development cycle. Instead it
-is a commitment to stay &quot;simultaneous&quot; on an on-going basis.
-Once in, if projects decide to not be part of future simultaneious
-releases, they need to communicate that widely, and as early as
-possible, since could effect adopters or downstream projects.</p>
-
-
-<h3>IP Documentation</h3>
-<p>Projects must have their IP Logs approved (a normal Eclipse
-requirement) and will follow the Eclipse Legal deadlines to do so. In
-addition, drafts of the Projects IP Logs must be available early,
-starting with M5. The development process requires the IP Log to always
-be accurate, but experience shows there's always some issues that have
-to be resolved, or fixed, before release (for example, sometimes a CQ
-might have the wrong flag, and cause it to not show up in the Auto IP
-Log). It is expected the IP Logs should be relatively complete by M7. If
-Projects have changes come in after M7 they can update until the
-deadline set by the IP staff (usually RC2). The purpose of having these
-early drafts is so that projects get familiar with what's required, and
-do not allow work to build up at the end, also to allow questions to
-come up, and have time to find answers, and also to allow time for
-issues with automatic IP tools to be addressed. Some adopters will want
-to look at these early drafts to see what 3rd party requirements are
-associated with the code.</p>
-<p>Being in the Simultaneous Release will give your IP some higher
-priority in getting evaluated, in order to make the date. The higher
-priority treatment is only for the 5 months or so before the release
-(after the deadline for CQs). The reason being, of course, is that the
-rest of the year the IP staff must also get work done for maintenance
-releases and projects not on the release train. During that part of the
-year (roughly July to February every year) all CQs are prioritized in a
-uniform way.</p>
-<h3 id="pcReleaseReview">Release Review</h3>
-<p>The release review archival materials must be complete by the
-date specified by the EMO, which is usually staged in earlier than for a
-usual release. (Typically RC2.)</p>
-<p>A Project's PMC must approve the projects request for review (a
-normal Eclipse requirement). In addition, to help organize and
-streamline the yearly Simultaneous release, a PMC must provide their
-approval in writing, in the form of a short summary of their projects
-that are requesting review and summary of the PMC's discussion or method
-of approving them. (This is meant to be very brief, such as 1/2 to 1
-page). The short summary can be documented in a mailing list, PMC
-Meeting notes, or even a wiki document. A pointer (URL) to the document
-should be provided to EMO, and will be included in the same notice to
-the community that provides pointers to the Project Docuware.</p>
-<p>The public review calls will be organized based on Top Level
-Project, and at least one PMC member should be on that call to give very
-brief overview of projects that are requesting the release review (not
-to exceed 5 minutes, at the very most).</p>
-<p>In addition to the ordinarily required Release Review Archival
-Materials, all Projects participating in yearly Release agree to provide
-a checklist-with-detail form that describes their compliance (or not)
-with all of the criteria items described in this document. May be in the form of providing a URL 
-to the checklist, ideally as part of the normal docuware. Note that
-this checklist-with-detail must be updated every milestone as things are
-completed, or details added, so progress can be reviewed by Planning
-Council and potential adopters. The primary report of compliance with
-the checklist must be provided at least at the level of a Top Level
-Project. In some cases, such as if sub-projects are very independent of
-each other, PMCs may decide to document things at a subproject level,
-and then &quot;roll-up&quot; to a Top Level document, or, if a Top Level
-Project is known to be uniform and &quot;close knit&quot; then they may
-provide one summary document that applies to all sub-projects.</p>
-<p></p>
-<h2>Play well with others ... to be in common repository</h2>
-<p>The requirements in this section must be met for a project to be
-on the common, central repository (e.g. /releases/helios) for end users
-to discover easily and minimum requirements to be included in EPP
-Packages. The criteria in this section are designed to make sure
-projects work relatively well, and work well together. This is
-especially required for adopters who may be using these projects in
-complicated, interwoven ways so each piece of the puzzle must fit
-together well and be dependable and be maintainable, as well as being on
-time and IP clean.</p>
-<p><b>Communication</b>:
-<p>At least one person from each project in a Simultaneous Release
-must subscribe to cross-project mailing list, since that is the primary
-communication channel for issues related to the Simultaneous Release.
-Also, at least one person from each project must subscribe to
-cross-project bugzilla inbox, as that is the primary bugzilla components
-for bugs that are truly cross-project, or bugs which are not known to be
-in one particular component.</p>
-<p>Your representative to the Planning Council, either from PMC or
-Strategic Member, must attend PC meetings and represent you there.
-Presumably, of course, after meeting or communicating with you and the
-other projects they represent, so they can fairly bring forward concerns
-and vote on issue that effect all projects, if required. Put another
-way, by committing to be in the Simultaneous Release, you agree to abide
-by all the Planning Council decisions and rules, so be sure your
-representative understands your project and your situation.</p>
-<p>Build team members (or their designated alternates) from each
-project may be asked to provide direct communication channels: phone,
-mail, IM, IRC and at least one build team member must be &quot;on
-call&quot; during the milestone integration periods.</p>
-<p><b>API</b>. Projects should leverage only published APIs of
-dependencies. All deviations must be documented in bugzillas. These
-bugzillas may be of the type that a dependent project should provide a
-required API, or of the type that a consuming project must move to some
-API that already exists. Note that technically there is no obligation
-for consumed projects to provide API that is requested ... that depends
-on many things ... but the main goal of requiring these bugzilla entries
-is to provide some documentation and measure of the amount of risk
-associated with non-API use.</p>
-<p><b>Message Bundles</b>. Projects must use <a
-	href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/reference/misc/message_bundles.html">
-Eclipse message bundles</a> unless there are technical reasons not to.</p>
-<p><b>Version Numbering</b>. Projects must use 4-part <a
-	href="http://wiki.eclipse.org/Version_Numbering">version numbers</a>.</p>
-<p><b>OSGi bundle format</b>. All plug-ins (bundles) must use the
-true bundle form. That is, provide a manifest.mf file, and not rely on
-the plugin.xml file being 'translated' into a manifest.mf file at
-initial startup. With that, empty plugin.xml files in the presence of a
-manifest.mf file should not be included in a bundle. (For some old
-history, see <a
-	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=130598">bug
-130598</a>.)</p>
-
-<p><b>Execution Environment</b>. All plug-ins must <a
-	href="http://wiki.eclipse.org/Execution_Environments">correctly
-list their Bundle Required Execution Environment (BREE)</a>.</p>
-
-<p><b>Signing</b>. Projects must use <a
-	href="http://wiki.eclipse.org/JAR_Signing">signed plugins using the
-Eclipse certificate</a>.</p>
-
-<p><b>Jarred Bundles</b>. Projects must use jarred plug-ins (with
-unpack=false) unless there are technical reasons not to do so. Also,
-nested jars should be avoided if possible since it creates problems for
-projects that has dependencies to such plug-ins. The OSGi runtime is
-fine with it but the PDE environment is not able to handle classpaths
-that contain nested jars. Exceptions to these principles should be
-documented by the project, so we can learn the reasons and extent of
-unjarred bundles.</p>
-<p><b>Re-use and share</b><b> </b>common third party jars. Any
-third-party plug-ins that are common between projects must be consumed
-via <a href="http://www.eclipse.org/orbit">Orbit</a>; a Simultaneous
-Release will not have duplicate third-party libraries (note that this
-only applies to identical versions of the libraries; thus if project A
-requires foo.jar 1.6 and project B uses foo.jar 1.7, that's ok, as long
-as it is required and has a documented reason).</p>
-
-<p><b>Optimization</b>. Projects must <a
-	href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/guide/p2_repositorytasks.htm">
-optimize their p2 repositories</a> to reduce bandwidth utilization and
-provide a better install and update experience for users.</p>
-<p><b>Provide p2 repository</b>. Projects must provide their own
-project p2 repository for their own project and updates. In addition,
-they must provide their archives and metadata in a specified format and
-method to allow at least parts of their repository to be aggregated and
-mirrored to a common repository. The <a
-	href="http://wiki.eclipse.org/Indigo/Contributing_to_Indigo_Build">current
-process</a> may be modified throughout the year, if improvements can be
-made. Clarification on 03/31/2010: Note that a project's
-repositories must contain original (conditioned) jars, and pack.gz files (where
-original jar means the jar produced by the build, but which has been
-conditioned for pack200). Clarification on 11/08/2010: feature
-&quot;includes&quot; must be strict, that is &quot;include&quot; an
-exact version of that other feature. This is required so installs and
-builds can be repeatable independent of the exact day of the install or
-the exact repos enabled. This is the way things are, and have been for years, 
-and this statement is just making it explicit. 
-While there may, in the future, be new
-mechanisms that allow some &quot;line up collection&quot; to be
-specified, it will be something new, not the feature
-&quot;includes&quot; element.</p>
-<p><b>Support Translations</b>. All strings must be externalized,
-and Projects must participate in Babel, meaning it is registered and
-available for string translation, etc. Projects must freeze the UI
-sufficiently early to allow the Babel project time to translate strings
-so there can be simultaneous release of translated versions. The UI
-should be frozen by M6 (a "freeze" all major changes and additions are
-done by M6, and changes after that are done in a controlled, well
-documented fashion, so Babel translators can more easily &quot;keep
-up&quot; with late changes).</p>
-<p><b>Excel in NL support</b>. The Project must use <a
-	href="http://wiki.eclipse.org/ICU4J">ICU4J</a>, where appropriate, to
-excel in NL support. (The latest ICU4J bundles will be in Orbit).</p>
-<p><b>Branding</b>. Each major project (as determined by
-participating PMCs) must have an 'About' dialog icon with hover text
-that displays the provider name. Every plug-in and feature must specify
-a descriptive provider-name (for features), or Bundle-Vendor header (for
-plug-ins), as determined by the project's PMC (e.g. "Eclipse Modeling
-Project" rather than "Eclipse.org"). Also, Projects must contribute to
-the welcome page when appropriate.</p>
-
-
-
-
-
-<p><b>Do No Harm.</b> Projects must work together in any combination
-of any install. Put another way, this means that users can install any
-subset of the projects participating in Simultaneous Release, and each
-of the installed projects will work as well as if it had been loaded
-independently. If such a problem is identified, the affected projects
-must track down and fix the problem.</p>
-<p><b>License text consistency</b>. Use standard forms of license
-documents so it is displayed in the most usable, and concise way during
-install and update. It is a normal requirement to use a standard <a
-	href="http://www.eclipse.org/legal/epl/about.php">Eclipse
-Foundation &quot;about&quot; template</a>, but where those templates are
-edited by each project, care must be taken to be sure they are edited in
-similar ways. That is, substantial differences are fine, if required, but we need to avoid minor differences based on case, 
-arbitrary dates, and formatting.  Note that the Eclipse Foundation's license or user
-agreement files may change from year to year (such as, see <a
-	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316152">bug
-316152</a>) but ideally in Indigo and future releases, it will be easier to
-point to a &quot;symbolic&quot; representation of the license, so it
-will be accurate with less manual updates from each project (see <a
-	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306818">bug
-306818</a>).</p>
-
-<p><b>Support Primary Eclipse Platform to be in EPP Package.</b> For
-Indigo, that means EPP packages (and the features and bundles that go
-into them) must be built on and tested with Eclipse 3.7.</p>
-<h2>Be a good Eclipse Citizen ... and document it</h2>
-<p>Projects should exhibit good Eclipse Citizenship, to Release and
-participate in Common Discovery Site and EPP Packages. These are often
-&quot;best practices&quot; that some projects have found helpful at
-Eclipse. These criteria often speak to the quality of the Project, as an
-Eclipse Project, as opposed to their code or architecture. They are a
-bit more subjective than some of the other criteria, and the relevancy
-to any particular project may not be as universal, so there is no set
-number of items to satisfy. But, it is required that each project
-document their level of compliance to each item. Especially good Eclipse
-Citizens will get a gold star, and especially bad ones might get a
-frowny face.</p>
-<p><b>Engage Community</b>. The Project should actively engage their
-community to get feedback on milestone builds, and document how they do
-that. One way to do this is to have a <a
-	href="http://wiki.eclipse.org/Architecture_Council/New_and_Noteworthy">New
-&amp; Noteworthy</a> for each milestone. New and Noteworthy documents should
-be something readable and usable not just a static list of all the bugs.
-Corollary: individual new &amp; noteworthy should be linked in to the
-collective New &amp; Noteworthy.</p>
-<p><b>Usability</b>. Should follow the <a
-	href="http://wiki.eclipse.org/User_Interface_Guidelines">User
-Interface Guidelines</a>. The <a href="http://wiki.eclipse.org/UI_Checklist">UI
-Checklist</a> is a good place to start. Also, should participate in a <a
-	href="http://wiki.eclipse.org/User_Interface_Best_Practices_Working_Group">User
-Interface Best Practices Working Group</a> <a
-	href="http://wiki.eclipse.org/UIBPWG_UI_Walkthrough"> UI
-walkthrough</a>.</p>
-<p><b>Performance</b>. Project should have measurable performance
-criteria that are regularly tested against. Projects should devote at
-least one milestone to performance and scalability improvements.</p>
-<p><b>Test Localization</b>. The project should use the <a
-	href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=217339">Babel
-Pseudo Translation Test</a> to verify their translatability. [Need better
-reference link.]</p>
-<p><b>Capabilities</b>. Each project should provide basic
-capability/activity definitions to allow for their UI contributions to
-be hidden. These can be provided in a separate plugins and feature to
-facilitate inclusion and reuse by consumers, or ... as most projects do
-... simply document some examples, so adopters can create their own, or
-reuse via copy/paste. Ideally, projects should also provide triggers to
-facilitate progressive discovery of functionality (but, not many do,
-other than the Platform). As with other &quot;good citizen&quot; items,
-projects are free to document &quot;we don't do this&quot; ... but, then
-at least it is known and better communicated.</p>
-<p><b>Enable Use with All Languages</b>. Should design and test for
-enabling all languages including bidi, unicode characters, etc. This is
-different than "translating" the program. For example, while using an
-English version of Eclipse Web Tools, someone should be able to create a
-Chinese language web application. [Need "how to" reference link.]</p>
-<p><b>Builds</b>. Projects must have a mature, stable build process:
-documented, scripted, repeatable, and executable by others.</p>
-<p><b>Ramp Down Planned and Defined</b>. Projects must have a
-written ramp down policy by M6, at the latest, and provide link. The
-plan should describe when the project plans to be feature complete, have
-API frozen, and similar. See <a
-	href="http://www.eclipse.org/eclipse/development/freeze_plan_3.5.php">Platform
-3.5 Endgame plan</a> as a guideline. See also <a
-	href="http://wiki.eclipse.org/indigoPlan/index.php?title=Indigo/Final_Daze&amp;action=edit">Indigo
-Final Daze</a>.)</p>
-<p><b>Accessibility</b>. Projects should design and test for
-accessibility compliance, following established guidelines and Eclipse
-fundamental techniques to achieve accessibility. Projects must document
-their accessibility work and compliance. Ideally this would be by using
-a publicly available checklists, such as</p>
-<ul>
-	<li><a
-		href="http://www.itic.org/resources/voluntary-product-accessibility-template-vpat/">http://www.itic.org/resources/voluntary-product-accessibility-template-vpat/
-	</a></li>
-	<li><a href="http://www.section508.gov/">http://www.section508.gov/</a></li>
-	<li><a href="http://www.w3.org/TR/WCAG/">http://www.w3.org/TR/WCAG/</a></li>
-</ul>
-<p>but, given the <a
-	href="http://wiki.eclipse.org/Planning_Council/Cross_Project_Teams/Accessibility">advice
-of the Accessibility Cross Project Team</a>, for this year's
-Simultaneous Release, projects can document their work or compliance as
-a negative, such as "we did not do any accessibility work or testing and
-do not know the degree of our compliance". But its important to
-document, so adopters know. If possible, and appropriate, accessibility
-testing tools can be leveraged such as <a
-	href="http://www.nvda-project.org/">NVDA</a>. The main <a
-	href="http://www.eclipse.org/articles/article.php?file=Article-Accessibility351/index.html">accessibility
-article at Eclipse Corner</a> has been made current (thanks goes to Todd
-Creasey).</p>
-
-<p><b>Unit Tests</b>. Projects must have some unit tests that can
-verify at least basic functionality of a build or distribution. The
-steps to build and run the tests must be documented and executable by
-others.</p>
-<p><b>API Policy</b> Defined and Documented. Typically would include
-how 'APIs' are distinguished from non-API and 'provisional' API, if any.
-It is recommended that non-API be marked with x-internal in the bundles
-manifest. Also, should include what the commitment is to API, how long
-maintained after deprecated, etc. As one example, see <a
-	href="http://wiki.eclipse.org/WTP_API_Policy">WTP API Policy</a>.</p>
-
-<p><b>Retention Policy.</b> Projects should define and document
-their retention policy. This should include both zip distributions and
-repositories. For examples, see <a
-	href="http://wiki.eclipse.org/WTP/Retention_Policy">WTP Retention
-Policy</a> and <a
-	href="http://wiki.eclipse.org/Eclipse_Project_Update_Sites">Eclipse
-Project Update Sites</a></p>
-<p><b>Project Metrics.</b> Projects should provide some summary
-metrics, such as number of bundles, number of committers, lines of code,
-number of bugs opened and fixed. This is so some statements can be made
-and tracked year-to-year about the size of the simultaneous release.</p>
-
-<p><b>Specify in Plans, support for auxiliary, or future Eclipse
-Platforms.</b> For Indigo, this means that each project needs to have a
-section (or theme) in their plans (and, that's the standard format
-plan), on how they intend to support Eclipse 4.1. The ideal statement
-would be to the effect that the project will run and has been tested on
-4.1. And, projects that exploit anything specific to 4.1 should explain
-that too. Naturally, since each project has their own plans and
-priorities, and one possibility is to plan "no support, no testing on
-4.1". The purpose of this requirement is to be clear on your plans and
-communicate those to the community.</p>
-
-<p></p>
-<h1>Additional Information</h1>
-<h2><a name="pcExceptionProcess">Planning Council Exception
-Process</a></h2>
-<p>Exceptions for any rule or schedule can be made if there are good
-enough reasons to. This same exception process will be followed for
-things like &quot;requests to respin&quot; a build after a deadline. The
-process to get any exception must be open and well documented and follow
-these steps:</p>
-<p>First, the Project's PMC must approve the request for an
-exception and it is the PMC (not the Project) that makes the request to
-the Planning Council. The Planning Council member that represents the
-PMC would bring the issue forward to the Planning Council.</p>
-<p>Second, the exception requires at least 3 positive votes from
-active Planning Council members and no negative votes. When time is a
-factor (e.g. requests for rebuilds) the deadline for voicing a negative
-vote is basically by the time 3 votes are documented. But when time is
-not a factor, such as when requesting an exception to one of the
-criteria, then a period of one week will pass before being final, to
-allow times for concerns or negative votes to be voiced even after 3
-positive votes. If there are not enough positive votes within one week,
-then the request for exception will be considered 'failed'. Note that
-&quot;3&quot; was chosen under the assumption that the Planning Council
-member representing the PMC would vote for it (since that PMC must
-approve it initially) so that means 2 others must also vote for it, for
-3 total.</p>
-<p>Depending on the timing, the issue and votes will be documented
-in either the Planning Council Meeting minutes, or on the Planning
-Council mailing list. If possible, some automatation may be added to the
-release reporting tool to aid this documentation.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/planning/EclipseSimultaneousReleaseOLD.php b/planning/EclipseSimultaneousReleaseOLD.php
deleted file mode 100644
index e1756bc..0000000
--- a/planning/EclipseSimultaneousReleaseOLD.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
-//ini_set("display_errors", "true");
-//error_reporting (E_ALL);
-
-#
-# Begin: page-specific settings.
-$pageTitle 		= "Eclipse Planning Council";
-//$pageKeywords	= "Eclipse Planning Council Simultaneous Release Requirements and must-dos";
-$pageAuthor		= "David Williams";
-$theme = "Nova";
-
-
-# Paste your HTML content between the markers!
-ob_start();
-?>
-
-	
-<div id="maincontent" style="padding: 5em; width: 90%; margins: 5%;">
-
-
-
-<?php 
-    $xhtmlFile = 'EclipseSimultaneousReleaseOLD.html';
-	// Load the source. Will treat as "raw" XHMTL for now
-	//$doc = new DOMDocument;
-	//$doc->loadHTMLFile($xhtmlFile);
-	//echo $doc->saveHTML();
-	echo file_get_contents($xhtmlFile);
-?>
-
-
-</div>
-
-<?php
-$html = ob_get_contents();
-ob_end_clean();
-
-# Generate the web page
-$App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
-
-?>
\ No newline at end of file
diff --git a/planning/SimultaneousReleaseGrid.php b/planning/SimultaneousReleaseGrid.php
deleted file mode 100644
index 6be78cb..0000000
--- a/planning/SimultaneousReleaseGrid.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-header("Location:http://www.eclipse.org/projects/releases/releases.php?release=indigo");
-?>
\ No newline at end of file
diff --git a/planning/SimultaneousReleaseOverview.php b/planning/SimultaneousReleaseOverview.php
deleted file mode 100644
index 6be78cb..0000000
--- a/planning/SimultaneousReleaseOverview.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-header("Location:http://www.eclipse.org/projects/releases/releases.php?release=indigo");
-?>
\ No newline at end of file
diff --git a/planning/grid.php b/planning/grid.php
deleted file mode 100644
index 6be78cb..0000000
--- a/planning/grid.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-header("Location:http://www.eclipse.org/projects/releases/releases.php?release=indigo");
-?>
\ No newline at end of file
diff --git a/planning/index.html b/planning/index.html
deleted file mode 100644
index e3c7035..0000000
--- a/planning/index.html
+++ /dev/null
@@ -1 +0,0 @@
-Eclipse Planning Council Web Test page
\ No newline at end of file
diff --git a/planning/index.php b/planning/index.php
index 6be78cb..7bdfeb4 100644
--- a/planning/index.php
+++ b/planning/index.php
@@ -1,3 +1,15 @@
 <?php
+/*******************************************************************************
+ * Copyright(c) 2015 Eclipse Foundation and others.
+ * 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://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
+ *******************************************************************************/
+
 header("Location:http://www.eclipse.org/projects/releases/releases.php?release=indigo");
 ?>
\ No newline at end of file
diff --git a/planning/poll2012name.php b/planning/poll2012name.php
deleted file mode 100644
index ce66dd0..0000000
--- a/planning/poll2012name.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php 
-//ini_set("display_errors", "true");
-//error_reporting (E_ALL);
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");      require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");      require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");     $App   = new App();  $Nav   = new Nav();  $Menu  = new Menu();
-
-       #*****************************************************************************
-       #
-       # poll2011name.php
-       #
-       # Author:            David Williams
-       # Date:                     2010-04-07
-       #
-       # Description: Quick poll to get input for Helios +1 Sim. Release name. 
-       #
-       #
-       #****************************************************************************
-       
-       #
-       # Begin: page-specific settings.  Change these. 
-       $pageTitle           = "Community Poll Runoff Vote";
-       $pageKeywords = "Eclipse Simultaneous Release 2011";
-       $pageAuthor          = "David Williams";
-       $theme = "Nova";
-
-ob_start();
-?>            
-
-
-<div id="maincontent" style="width: 90%; padding: 5%;">
-
-              <h1><?= $pageTitle ?></h1>
-                     <h2>Thanks for your help deciding the name for the 2012 Eclipse Simultaneous Release</h2>
-	                     
-                     <p>The results of the poll is now available, and pending approval from the EMO, the 2012 name will be <b>Juno</b>.</p> 
-			                     
-                     <p>
-                                     <div style="padding: 10px; margin-left: 5%; margin-right: 5%;">
-                                                 <p><b>Results: Runoff vote - What is your favorite name for the 2012 Simultaneous Release?</b></p>Juno: 47 %<br /><br />Jupiter: 34 %<br /><br />Jubilate: 0 %<br /><br />Jura: 4 %<br /><br />Juliet: 4 %<br /><br />Jules: 2 %<br /><br />Jasmine: 6 %<br /><br />Jason: 3 %<br /><br /><p><b>Total votes: </b>289</p>                           
-                                     </div>
-                      </p>
-                     <p>Thanks for your vote. And your help with Eclipse!</p>              
-                     
-</div>
-
-<?php
-       $html = ob_get_contents();
-       ob_end_clean();
-
-       # Generate the web page
-       $App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
-
-
diff --git a/projects.php b/projects.php
index 6db67c8..93a1e40 100644
--- a/projects.php
+++ b/projects.php
@@ -1,98 +1,35 @@
-<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
+<?php
 /*******************************************************************************
- * Copyright (c) 2009-2010 Eclipse Foundation and others.
+ * Copyright(c) 2015 Eclipse Foundation and others.
  * 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
+ * http://eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    
+ *    Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
  *******************************************************************************/
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
 
-	#
-	# Begin: page-specific settings.  Change these. 
-	$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
-	$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
-	$pageAuthor		= "Nathan Gervais";
+$App = new App();
+$Nav = new Nav();
+$Menu = new Menu();
+include($App->getProjectCommon()); // All on the same line to unclutter the user's desktop'
 
-	
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/Project.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/SimultaneousReleaseInfo.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/debug.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/common.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/images.inc");
-//$release = getCurrentSimultaneousReleaseName();
-$release = 'indigo';
-$projects = getAllProjectsInSimultaneousRelease($release);
-sortProjects($projects, 'name');
-	# Paste your HTML content between the EOHTML markers!	
-	ob_start();
 
-	?>
-	<div id="fullcolumn" class="indigo">
-		<a href="/indigo"><img id="indigoLogo" src="images/indigologo.png"/></a>
-		<div id="container">
-			<div id="nav">
-				<ul>
-					<li><a href="/downloads/">Downloads</a></li>
-					<li><a class="active" href="/indigo/projects.php">Projects</a></li>
-					<li><a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011">DemoCamps</a></li>
-					<li class="last"><a href="/indigo/friends.php">The Indigo 500</a></li>
-				</ul>
-			</div>
-			<div id="window" class="overflow">
-			<table class="projects">
-		<tr class="header">
-			<td width="35%">Project Name</td>
-			<td width="12%" align="center">Version</td>
-			<td width="12%" align="center">Download</td>
-		</tr>			
-	<?php 
-	$count = 0;
-	$new = 0;
-	
-	foreach ($projects as $project) {
-		/* var Project $project */	
-		$projectName = $project->getName();
-		$projectid = $project->getId();
-		$download = $project->getDownloadsUrl();
-		if ($download) $download = "<a href=\"$download\"><img src=\"$images->download_small\"/></a>";
-		$url = $project->getProjectUrl();
-		$info = $project->getSimultaneousReleaseInfo($release);
-		if (!$info) continue;
-		
-		if ($info->isNew()) {
-			$projectName = "$projectName [new]";
-			$new++;
-		}
-		$versions = array();
-		foreach($info->getReleases() as $projectRelease) {
-			if ($projectRelease->getName()) $versions[] = $projectRelease->getName();
-		}
-		$version = implode(', ', $versions);
-		$version = preg_replace('/ /', '&nbsp;', $version);
-		
-		$count++;
-		
-		echo "<tr class=\"tableRow\">
-			<td><b><a href=\"$url\">$projectName</a></b></td>
-			<td align=\"center\">$version</td>
-			<td align=\"center\">$download</td>
-		</tr>";
-	}
-	?>
+// Begin: page-specific settings. Change these.
+$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
+$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
+$pageAuthor		= "Nathan Gervais";
 
-			
-			</table>			
-			</div>
-		</div>
-	</div>
-	<?
-	$html = ob_get_clean();
+// Place your html content in a file called content/en_pagename.php
+ob_start();
+include("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
 
-	# Generate the web page
-	$App->Promotion = TRUE;
-	$App->AddExtraHtmlHeader('<link type="text/css" href="/indigo/style.css" rel="stylesheet"/>');	
-	$App->generatePage('Nova', $Menu, NULL , $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
\ No newline at end of file
+# Generate the web page
+$App->AddExtraHtmlHeader('<link type="text/css" href="/indigo/style.css" rel="stylesheet"/>');
+$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
\ No newline at end of file
diff --git a/scripts/friendsFunctions.php b/scripts/friendsFunctions.php
deleted file mode 100644
index 069f44a..0000000
--- a/scripts/friendsFunctions.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/smartconnection.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/friendsContributionsList.class.php");
-
-function sideDonorList($_numrows, $_amount=TRUE) {
-
-	
-	$where = "WHERE F.is_benefit = 1 AND FC.date_expired > '2012-05-01 00:00:00' AND FC.date_expired < '2012-08-01 00:00:00'";
-	
-	$friendsContributionsList = new FriendsContributionsList();
-	$friendsContributionsList->selectFriendsContributionsList(0, $_numrows, $where);
-	$friend = new Friend();
-	$contribution = new Contribution();
-	$fcObject = new FriendsContributions();
-	
-	$count = $friendsContributionsList->getCount();
-	for ($i=0; $i < $count; $i++)
-	{
-		$fcObject = $friendsContributionsList->getItemAt($i);
-		$friend = $fcObject->getFriendObject();
-		$contribution = $fcObject->getContributionObject();
-		$date = $contribution->getDateExpired();
-		$date = strtotime($date);
-		$date = strtotime("-1 year", $date);
-		$now = strtotime("now");
-		if ($date <= $now) {
-			$anonymous = $friend->getIsAnonymous();
-			if ($anonymous != 1) {
-				$name = ucfirst(strtolower($friend->getFirstName())) . " " . ucfirst(strtolower($friend->getLastName()));
-				$name = htmlentities($name);
-			}
-			else 
-				$name = "Anonymous";
-			$benefit = $friend->getIsBenefit();
-			if ($benefit)
-				$style = "";
-			else 
-				$style = "";
-			if ($_amount) {
-				$amount = $contribution->getAmount();
-				echo "<li $style>$name - $" . $amount . "</li>";
-			}
-			else {
-				if ($i % 2 == 0){
-					echo "<b>" . $name . " </b>";
-				}
-				else {
-					echo "$name ";
-				}
-			}
-		}
-	}
-}
-
-function getWantedCount() {
-	$where = "WHERE F.is_benefit = 1 AND FC.date_expired > '2012-05-01 00:00:00' AND FC.date_expired < '2012-08-01 00:00:00'";
-	
-	$friendsContributionsList = new FriendsContributionsList();
-	$friendsContributionsList->selectFriendsContributionsList(0, 500, $where);	
-	return $friendsContributionsList->getCount();
-}
\ No newline at end of file
diff --git a/scripts/smooth-add.js b/scripts/smooth-add.js
deleted file mode 100644
index 74f452e..0000000
--- a/scripts/smooth-add.js
+++ /dev/null
@@ -1,49 +0,0 @@
-function smoothAdd(id, text)
-{
-	var el = $('#' + id);
-
-	var h = el.height();
-
-	el.css({
-		height:   h,
-		overflow: 'hidden'
-	});
-
-	var ulPaddingTop    = parseInt(el.css('padding-top'));
-	var ulPaddingBottom = parseInt(el.css('padding-bottom'));
-
-	el.prepend('<li>' + text + '</li>');
-
-	var first = $('li:first', el);
-	var last  = $('li:last',  el);
-
-	var foh = first.outerHeight();
-
-	var heightDiff = foh - last.outerHeight();
-
-	var oldMarginTop = first.css('margin-top');
-
-	first.css({
-		marginTop: 0 - foh,
-		position:  'relative',
-		top:       0 - ulPaddingTop
-	});
-
-	last.css('position', 'relative');
-
-	el.animate({ height: h + heightDiff }, 1500)
-
-	first.animate({ top: 0 }, 250, function() {
-		first.animate({ marginTop: oldMarginTop }, 1000, function() {
-			last.animate({ top: ulPaddingBottom }, 250, function() {
-				last.remove();
-
-				el.css({
-					height:   'auto',
-					overflow: 'visible'
-				});
-			});
-		});
-	});
-}
-
diff --git a/style.css b/style.css
index 2ac6218..c852c80 100644
--- a/style.css
+++ b/style.css
@@ -1,158 +1,305 @@
 @CHARSET "ISO-8859-1";
-.clearfix:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; }
-.clearfix { display: inline-block; }
-#clearFooter { height: 0px !important; }
-#fullcolumn.indigo { background:#00416a url('/indigo/images/indigobg.png') no-repeat; height:560px; margin-bottom:7px; 
-					 font-family:Arial, Verdana, Geneva, sans-serif; color:#FFF;}
-#container { padding-left:0px; margin-top:0px; width:980px; }
-#indigoLogo { position:relative; top:-10px;left:20px;}
-p.indigo { padding-left:50px; font-size:20px; line-height:120%; width:700px;  }
-p.bang { width:30px; float:left; position:relative; top:-15px; left:20px;}
-#nav { background:#FFF url('/indigo/images/menubg.png') repeat-x; height:44px; margin-bottom:0px; width:979px; }
 
-#nav #spacer { background-color:#FFF;
-			   background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#0278c2), to(#9ad9ff)); 
-				width:8px; height:44px; float:left; }
+.clearfix:after {
+  content: ".";
+  display: block;
+  clear: both;
+  visibility: hidden;
+  line-height: 0;
+  height: 0;
+}
 
-#nav ul li {background:#FFF url('images/menubg.png');
-			float:left; display:inline;
-			height:16px;
-			 padding:14px 40px; margin:0px;
-			 
-			}
-			
-#nav ul li:hover { background: #0277c3 url('/indigo/images/menubg.png'); }
-#nav ul li a { color:#333; font-size:16px; text-decoration:none;font-weight:bold;font-family:Arial; text-shadow:0px 0px 5px #EEE;}
+.clearfix {
+  display: inline-block;
+}
 
-#window { height:367px; width:979px; background:#00416a; background-color:rgba(0, 65, 106, 0.8);padding-top:20px; position:relative;}
-#window.overflow {  overflow-y:scroll; }
+#clearFooter {
+  height: 0px !important;
+}
 
-.whiteout {  background:#FFF; background-color:rgba(255,255,255,0.25); }
+#fullcolumn.indigo {
+  background: #00416a url('/indigo/images/indigobg.png') no-repeat;
+  height: 590px;
+  margin-bottom: 7px;
+  font-family: Arial, Verdana, Geneva, sans-serif;
+  color: #FFF;
+  width:980px;
+}
 
-table.projects { margin-left:15px; }
-.header td { font-size:15px; font-weight:bold; border-bottom:1px solid white; }
-.tableRow td a { color:#FFF; }
-.tableRow td a:visited { color:#EEE; }
-.wantedDesc { margin-left:20px; }
-.wantedDesc a { color:#9ad9ff; }
+#container {
+  padding-left: 0px;
+  margin-top: 0px;
+  width: 980px;
+}
 
-#ticker { padding-left:20px; padding-top:13px;  width:700px;}
-#ticker li { font-size:20px; line-height:26px; list-style-image:none; list-style-type:circle; list-style-position:inside;list-style-color:#FFF;}
-#ticker li a { color:#9ad9ff; }
-#hide { display:none; }
+#indigoLogo {
+  position: relative;
+  left: 20px;
+}
+
+p.indigo {
+  padding-left: 50px;
+  font-size: 20px;
+  line-height: 120%;
+  width: 700px;
+}
+
+p.bang {
+  width: 30px;
+  float: left;
+  position: relative;
+  top: -15px;
+  left: 20px;
+}
+
+#nav {
+  background: #FFF url('/indigo/images/menubg.png') repeat-x;
+  height: 44px;
+  margin-bottom: 0px;
+  width: 979px;
+}
+
+#nav #spacer {
+  background-color: #FFF;
+  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#0278c2),
+    to(#9ad9ff));
+  width: 8px;
+  height: 44px;
+  float: left;
+}
+
+#nav ul li {
+  background: #FFF url('images/menubg.png');
+  float: left;
+  display: inline;
+  height: 16px;
+  padding: 14px 40px;
+  margin: 0px;
+}
+
+#nav ul li:hover {
+  background: #0277c3 url('/indigo/images/menubg.png');
+}
+
+#nav ul li a {
+  color: #333;
+  font-size: 16px;
+  text-decoration: none;
+  font-weight: bold;
+  font-family: Arial;
+  text-shadow: 0px 0px 5px #EEE;
+}
+
+#window {
+  height: 408px;
+  width: 979px;
+  background: #00416a;
+  background-color: rgba(0, 65, 106, 0.8);
+  padding-top: 20px;
+  position: relative;
+}
+
+#window.overflow {
+  overflow-y: scroll;
+}
+
+.whiteout {
+  background: #FFF;
+  background-color: rgba(255, 255, 255, 0.25);
+}
+
+table.projects {
+  margin-left: 15px;
+}
+
+.header td {
+  font-size: 15px;
+  font-weight: bold;
+  border-bottom: 1px solid white;
+}
+
+.tableRow td a {
+  color: #FFF;
+}
+
+.tableRow td a:visited {
+  color: #EEE;
+}
+
+.wantedDesc {
+  margin-left: 20px;
+}
+
+.wantedDesc a {
+  color: #9ad9ff;
+}
+
+#ticker {
+  padding-left: 20px;
+  padding-top: 13px;
+  width: 700px;
+}
+
+#ticker li {
+  font-size: 20px;
+  line-height: 26px;
+  list-style-image: none;
+  list-style-type: circle;
+  list-style-position: inside;
+  list-style-color: #FFF;
+}
+
+#ticker li a {
+  color: #9ad9ff;
+}
+
+#hide {
+  display: none;
+}
 /*-------------------------------------*/
-.wantedDesc { float:left;margin-top:0px;}
+.wantedDesc {
+  float: left;
+  margin-top: 0px;
+}
 
-.wantedDesc.main { width:625px;}
+.wantedDesc.main {
+  width: 625px;
+}
 
-.wantedDesc.recent { width:280px; background:#00416a; background-color:rgba(0, 65, 106, 0.8); height:260px; border:1px solid #1f5f86;}
+.wantedDesc.recent {
+  width: 280px;
+  background: #00416a;
+  background-color: rgba(0, 65, 106, 0.8);
+  height: 288px;
+  border: 1px solid #1f5f86;
+}
 
-.wantedDesc.recent h3 { text-shadow:0px 0px 5px #EEE;display:block; width:270px; color:#000; background: #9ad9ff url('images/menubg.png');  padding:5px; margin-right:-10px;}
+.wantedDesc.recent h3 {
+  text-shadow: 0px 0px 5px #EEE;
+  display: block;
+  width: 270px;
+  color: #000;
+  background: #9ad9ff url('images/menubg.png');
+  padding: 5px;
+  margin-right: -10px;
+}
 
-.wantedDesc.recent .more { padding-left:10px; }
+.wantedDesc.recent .more {
+  padding-left: 10px;
+}
 
-.wantedDesc li p{
-	position:relative;
-	top:-15px;
+.wantedDesc li p {
+  position: relative;
+  top: -15px;
 }
 
 .wantedDesc li {
-	list-style-position:inside;	
+  list-style-position: inside;
 }
 
 .wantedDesc h3 {
-	display:inline;
-	color:#FFF;
-	border:0px;	
+  display: inline;
+  color: #FFF;
+  border: 0px;
 }
 
-.donorList { clear:both; margin-left:20px;}
+.donorList {
+  clear: both;
+  margin-left: 20px;
+}
 
-.donorList li{
-	list-style-image:url("/indigo/images/starbullet.png") !important;
-	margin-bottom:0px !important;
-	margin-right:10px;
+.donorList li {
+  list-style-image: url("/indigo/images/starbullet.png") !important;
+  margin-bottom: 0px !important;
+  margin-right: 10px;
 }
 
 h1.wanted {
-	margin-top:20px;
-	font-size:30px;
-	margin-bottom:20px;
-	text-shadow:0px 0px 3px #9ad9ff;
+  margin-top: 20px;
+  font-size: 30px;
+  margin-bottom: 20px;
+  text-shadow: 0px 0px 3px #9ad9ff;
 }
 
 #bulletList {
-	margin-left:30px;
+  margin-left: 30px;
 }
 
 .donate {
-	font-size:30px;	
-	color:#9ad9ff;
-	line-height:32px;
-	text-shadow:0px 0px 3px #9ad9ff;
-	margin-top:30px;
+  font-size: 30px;
+  color: #9ad9ff;
+  line-height: 32px;
+  text-shadow: 0px 0px 3px #9ad9ff;
+  margin-top: 30px;
 }
 
 h4.highlights {
-	font-size:24px;
-	color:#FFF; 
-	text-shadow:0px 0px 3px #9ad9ff;
-	margin-left:20px; 
-	width:800px;
-	line-height:32px;
-	border-bottom:1px solid white;
+  font-size: 24px;
+  color: #FFF;
+  text-shadow: 0px 0px 3px #9ad9ff;
+  margin-left: 20px;
+  width: 800px;
+  line-height: 32px;
+  border-bottom: 1px solid white;
 }
 
-.bluefuzz { 
-	text-shadow:0px 0px 3px #9ad9ff;	
-	font-size:20px;
+.bluefuzz {
+  text-shadow: 0px 0px 3px #9ad9ff;
+  font-size: 20px;
 }
+
 .star {
-	float:left;
-	width:40px;
-	height:50px;
+  float: left;
+  width: 40px;
+  height: 50px;
 }
 
 .counter {
-	font-size:20px;	
-	text-align:left;
-	position:relative;
-	padding-left:10px;
-	top:-20px;
-	left:20px;
-	color:#00416a;
+  font-size: 20px;
+  text-align: left;
+  position: absolute;
+  padding-left: 10px;
+  top: 0px;
+  left: 20px;
+  color: #00416a;
 }
 
 span.active {
-	font-size:20px;
-	color:#00416a;
-	font-weight:bold;
+  font-size: 20px;
+  color: #00416a;
+  font-weight: bold;
 }
 
 span.train {
-	position:absolute;
-	top:370px;
-	right:5px;
-	text-align:right;
-	
+  position: absolute;
+  top: 370px;
+  right: 5px;
+  text-align: right;
 }
-.spacing { margin-top:40px; }
+
+.spacing {
+  margin-top: 40px;
+}
 
 .progressBar {
-	
-	height:25px;
-	width:925px;
-	clear:both;
-	background:#1f5f86;
-	background-color:rgba(154, 217,255, 0.2);
-	margin:30px 0 30px;
-	
+  height: 25px;
+  width: 925px;
+  clear: both;
+  background: #1f5f86;
+  background-color: rgba(154, 217, 255, 0.2);
+  margin: 30px 0 30px;
+  position:relative;
 }
 
 .progress {
-	background-image:url('/indigo/images/progress.jpg');
-	height:25px;
+  background-image: url('/indigo/images/progress.jpg');
+  height: 25px;
 }
 
-
-p.legal { clear:both;font-size:10px;color:#888;position:relative; top:-20px; }
\ No newline at end of file
+p.legal {
+  clear: both;
+  font-size: 10px;
+  color: #888;
+  position: relative;
+  top: -20px;
+}
\ No newline at end of file
