diff --git a/_projectCommon.php b/_projectCommon.php
index 04a42c9..e229806 100644
--- a/_projectCommon.php
+++ b/_projectCommon.php
@@ -1,24 +1,19 @@
 <?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
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Nathan Gervais (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 
-	# 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";
+$theme = NULL;
 $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
+$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. ');
diff --git a/content/en_friends.php b/content/en_friends.php
index c5e0f35..fc39a2f 100644
--- a/content/en_friends.php
+++ b/content/en_friends.php
@@ -1,15 +1,17 @@
 <?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
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Nathan Gervais (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 <div class="col-md-24">
   <div id="fullcolumn" class="indigo">
diff --git a/content/en_index.php b/content/en_index.php
index 09405d9..84da436 100644
--- a/content/en_index.php
+++ b/content/en_index.php
@@ -1,15 +1,17 @@
 <?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
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Nathan Gervais (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 <div class="col-md-24">
   <div id="fullcolumn" class="indigo">
diff --git a/content/en_projects.php b/content/en_projects.php
index 2f05529..03cd14d 100644
--- a/content/en_projects.php
+++ b/content/en_projects.php
@@ -1,15 +1,17 @@
 <?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
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Nathan Gervais (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 <div class="col-md-24">
   <div id="fullcolumn" class="indigo">
diff --git a/friends.php b/friends.php
index bd3e57d..a1594e7 100644
--- a/friends.php
+++ b/friends.php
@@ -1,35 +1,34 @@
 <?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
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * 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");
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.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'
+$Theme = $App->getThemeClass();
 
+include ($App->getProjectCommon());
 
-// Begin: page-specific settings. Change these.
-$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
-$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
-$pageAuthor		= "Nathan Gervais";
+$pageTitle = "Eclipse.org - Indigo Simultaneous Release";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("indigo, release, simultaneous, release train, 3.7");
+$Theme->setPageAuthor("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);
+$Theme->setHtml($html);
+$Theme->generatePage();
\ No newline at end of file
diff --git a/index.php b/index.php
index f8fe045..e3ad248 100644
--- a/index.php
+++ b/index.php
@@ -1,36 +1,35 @@
 <?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
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * 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");
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.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'
+$Theme = $App->getThemeClass();
 
+include ($App->getProjectCommon());
 
-// Begin: page-specific settings. Change these.
-$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
-$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
-$pageAuthor		= "Nathan Gervais";
+$pageTitle = "Eclipse.org - Indigo Simultaneous Release";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("indigo, release, simultaneous, release train, 3.7");
+$Theme->setPageAuthor("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);
+$Theme->setHtml($html);
+$Theme->generatePage();
 
diff --git a/projects.php b/projects.php
index 93a1e40..1f938c2 100644
--- a/projects.php
+++ b/projects.php
@@ -1,35 +1,34 @@
 <?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
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * 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");
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.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'
+$Theme = $App->getThemeClass();
 
+include ($App->getProjectCommon());
 
-// Begin: page-specific settings. Change these.
-$pageTitle 		= "Eclipse.org - Indigo Simultaneous Release";
-$pageKeywords	= "indigo, release, simultaneous, release train, 3.7";
-$pageAuthor		= "Nathan Gervais";
+$pageTitle = "Eclipse.org - Indigo Simultaneous Release";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("indigo, release, simultaneous, release train, 3.7");
+$Theme->setPageAuthor("Nathan Gervais");
 
 // Place your html content in a file called content/en_pagename.php
 ob_start();
-include("content/en_" . $App->getScriptName());
+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);
\ No newline at end of file
+$Theme->setHtml($html);
+$Theme->generatePage();
\ No newline at end of file
diff --git a/style.css b/style.css
index c852c80..78b6f69 100644
--- a/style.css
+++ b/style.css
@@ -23,7 +23,7 @@
   margin-bottom: 7px;
   font-family: Arial, Verdana, Geneva, sans-serif;
   color: #FFF;
-  width:980px;
+  width: 980px;
 }
 
 #container {
@@ -288,7 +288,7 @@
   background: #1f5f86;
   background-color: rgba(154, 217, 255, 0.2);
   margin: 30px 0 30px;
-  position:relative;
+  position: relative;
 }
 
 .progress {
