diff --git a/_projectCommon.php b/_projectCommon.php
index 3784640..91c482a 100644
--- a/_projectCommon.php
+++ b/_projectCommon.php
@@ -1,21 +1,23 @@
 <?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";
+// 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
+
 $App->Promotion = FALSE;
 
-$App->setOutDated( '2011-11-11', '<a href="https://projects.eclipse.org/releases/kepler">Kepler</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/kepler">Kepler</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
index e0cd9e6..bd3a0a1 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-sm-24">
   <div id="novaContent">
diff --git a/content/en_index.php b/content/en_index.php
index aa44f7a..bdaa043 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-sm-24">
   <div id="novaContent">
diff --git a/content/en_kepler.php b/content/en_kepler.php
index d9186e6..5c05001 100644
--- a/content/en_kepler.php
+++ b/content/en_kepler.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-sm-24">
   <div id="novaContent">
diff --git a/content/en_projects.php b/content/en_projects.php
index 42b5685..ef69df9 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-sm-24">
   <div id="novaContent">
diff --git a/friends.php b/friends.php
index 1933634..80f9cf3 100644
--- a/friends.php
+++ b/friends.php
@@ -1,36 +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.
-$page           = "Friends of Eclipse";
-$pageTitle 		= "Eclipse.org - Kepler Simultaneous Release : " . $page;
-$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
-$pageAuthor		= "Christopher Guindon";
+$page = "Friends of Eclipse";
+$pageTitle = "Eclipse.org - Kepler Simultaneous Release : " . $page;
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("eclipse kepler, release, simultaneous, release train, kepler");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// 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="/kepler/css/styles.css" rel="stylesheet"/>');
-$App->generatePage("solstice", $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/index.php b/index.php
index add8457..f19a7e2 100644
--- a/index.php
+++ b/index.php
@@ -1,36 +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.
-$page           = "Highlights";
-$pageTitle 		= "Eclipse.org - Kepler Simultaneous Release : " . $page;
-$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
-$pageAuthor		= "Christopher Guindon";
+$page = "Highlights";
+$pageTitle = "Eclipse.org - Kepler Simultaneous Release : " . $page;
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("eclipse kepler, release, simultaneous, release train, kepler");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// 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="/kepler/css/styles.css" rel="stylesheet"/>');
-$App->generatePage("solstice", $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/kepler.php b/kepler.php
index ff58597..79fb970 100644
--- a/kepler.php
+++ b/kepler.php
@@ -1,36 +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.
-$page           = "Who is Kepler?";
-$pageTitle 		= "Eclipse.org - Kepler Simultaneous Release : " . $page;
-$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
-$pageAuthor		= "Christopher Guindon";
+$page = "Who is Kepler?";
+$pageTitle = "Eclipse.org - Kepler Simultaneous Release : " . $page;
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("eclipse kepler, release, simultaneous, release train, kepler");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// 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="/kepler/css/styles.css" rel="stylesheet"/>');
-$App->generatePage("solstice", $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/planning/_projectCommon.php b/planning/_projectCommon.php
index da40184..b03a022 100644
--- a/planning/_projectCommon.php
+++ b/planning/_projectCommon.php
@@ -9,10 +9,13 @@
  * Contributors:
  *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
  *******************************************************************************/
-$theme = "solstice";
+
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+
 $App->Promotion = TRUE;
 
+$Nav = new Nav();
 $Nav->addNavSeparator("Kepler", null);
 $Nav->addCustomNav("Project List", "/projects/releases/releases.php?release=kepler", "_self", 2);
 $Nav->addCustomNav("Project Descriptions", "/projects/releases/descriptions.php?release=kepler", "_self", 2);
-$App->setOutDated( '2011-11-11', '<a href="https://projects.eclipse.org/releases/kepler/SR2">Kepler</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/kepler/SR2">Kepler</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/planning/content/en_index.php b/planning/content/en_index.php
index 1bab064..47e2920 100644
--- a/planning/content/en_index.php
+++ b/planning/content/en_index.php
@@ -1,27 +1,18 @@
 <?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
+ */
 ?>
-<aside id="leftcol" class="col-md-4">
-  <div class="sideitem">
-    <h3>Juno</h3>
-    <ul id="leftnav">
-      <li><a href="/projects/releases/releases.php?release=juno"
-        target="_self">Project List</a></li>
-      <li><a href="/projects/releases/descriptions.php?release=juno"
-        target="_self">Project Descriptions</a></li>
-    </ul>
-  </div>
-</aside>
 <div id="midcolumn">
   <h1>Eclipse Planning Council</h1>
   <h2>Purpose</h2>
@@ -32,4 +23,15 @@
       href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
       Council Wiki Pages</a>
   </p>
-</div>
\ No newline at end of file
+</div>
+<aside id="rightcolumn">
+  <div class="sideitem">
+    <h3>Juno</h3>
+    <ul id="leftnav">
+      <li><a href="/projects/releases/releases.php?release=juno"
+        target="_self">Project List</a></li>
+      <li><a href="/projects/releases/descriptions.php?release=juno"
+        target="_self">Project Descriptions</a></li>
+    </ul>
+  </div>
+</aside>
\ No newline at end of file
diff --git a/planning/content/en_poll2014.php b/planning/content/en_poll2014.php
index e148090..4b60cfb 100644
--- a/planning/content/en_poll2014.php
+++ b/planning/content/en_poll2014.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
+ */
 ?>
 <h1>Community Poll Vote</h1>
 <h2>Help decide the name for the 2014 Eclipse Simultaneous Release!</h2>
diff --git a/planning/index.php b/planning/index.php
index 6014464..52c3ea1 100644
--- a/planning/index.php
+++ b/planning/index.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 - Juno Simultaneous Release";
-$pageKeywords	= "juno, release, simultaneous, release train, eclipse 4, e4";
-$pageAuthor		= "Christopher Guindon";
+$pageTitle = "Eclipse Planning Council";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("eclipse kepler, release, simultaneous, release train, kepler");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// 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="/juno/style.css" rel="stylesheet"/>');
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
\ No newline at end of file
+$Theme->setHtml($html);
+$Theme->setNav($Nav);
+$Theme->generatePage();
\ No newline at end of file
diff --git a/planning/poll2014.php b/planning/poll2014.php
index f396a91..29979d0 100644
--- a/planning/poll2014.php
+++ b/planning/poll2014.php
@@ -1,35 +1,33 @@
 <?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           = "Community Poll Vote";
-$pageKeywords = "Eclipse Simultaneous Release 2014";
-$pageAuthor          = "Chris Aniszczyk";
+$pageTitle = "Community Poll Vote";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("Eclipse Simultaneous Release 2014");
+$Theme->setPageAuthor("Chris Aniszczyk");
 
-// 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="/juno/style.css" rel="stylesheet"/>');
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
\ No newline at end of file
+$Theme->setHtml($html);
+$Theme->setNav($Nav);
+$Theme->generatePage();
\ No newline at end of file
diff --git a/projects.php b/projects.php
index 4843080..3ae8cf8 100644
--- a/projects.php
+++ b/projects.php
@@ -1,35 +1,33 @@
 <?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 - Kepler Simultaneous Release : Projects";
-$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
-$pageAuthor		= "Christopher Guindon";
+$pageTitle = "Eclipse.org - Kepler Simultaneous Release : Projects";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("eclipse kepler, release, simultaneous, release train, kepler");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// 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="/kepler/css/styles.css" rel="stylesheet"/>');
-$App->generatePage("solstice", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
\ No newline at end of file
+$Theme->setHtml($html);
+$Theme->generatePage();
\ No newline at end of file
