diff --git a/_projectCommon.php b/_projectCommon.php
index b03a191..13ba7ac 100644
--- a/_projectCommon.php
+++ b/_projectCommon.php
@@ -1,24 +1,18 @@
 <?php
-
-/*******************************************************************************
- * Copyright (c) 2014 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) 2014, 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:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ *   Christopher Guindon (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";
 $App->Promotion = FALSE;
 
-//$App->setOutDated( '2011-11-11', '<a href="https://projects.eclipse.org/releases/indigo">Luna</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">Luna</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_index.php b/content/en_index.php
index dac97f2..c79b9a0 100644
--- a/content/en_index.php
+++ b/content/en_index.php
@@ -1,14 +1,17 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 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) 2014, 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:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 <!--
 <div class="toolbar-menu breadcrumbs-offset">
diff --git a/index.php b/index.php
index 27cd3bc..d45a5d0 100644
--- a/index.php
+++ b/index.php
@@ -1,42 +1,40 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 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) 2014, 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:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ *   Christopher Guindon (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");
 
-	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();
+$Theme = $App->getThemeClass();
 
-	$App 	= new App();
-	$Nav	= new Nav();
-	$Menu 	= new Menu();
-  include($App->getProjectCommon());
+include ($App->getProjectCommon());
 
-	# Begin: page-specific settings.  Change these.
-	$pageTitle 		= "Eclipse Luna";
-	$pageKeywords	= "eclipse Luna, release, simultaneous, release train, luna";
-	$pageAuthor		= "Christopher Guindon";
+// Begin: page-specific settings. Change these.
+$pageTitle = "Eclipse Luna";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("eclipse Luna, release, simultaneous, release train, luna");
+$Theme->setPageAuthor("Christopher Guindon");
 
-  // Custom theme variables
-	$variables = array();
-	$variables['hide_breadcrumbs'] = TRUE;
-	$variables['main_container_classes'] = 'container-full  footer-offset  breadcrumbs-offset padding-top';
-	$App->setThemeVariables($variables);
+// Custom theme variables
+$variables = array();
+$variables['hide_breadcrumbs'] = TRUE;
+$variables['main_container_classes'] = 'container-full  footer-offset  breadcrumbs-offset padding-top';
+$App->setThemeVariables($variables);
 
-	// Place your html content in a file called content/en_pagename.php
-	ob_start();
-	include("content/en_" . $App->getScriptName());
-	$html = ob_get_clean();
+ob_start();
+include ("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
 
-	# Generate the web page
-	$App->Promotion = TRUE;
-	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/luna/assets/public/stylesheets/styles.min.css" media="screen" />');
-	$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/luna/assets/public/stylesheets/styles.min.css" media="screen" />');
+$Theme->setHtml($html);
+$Theme->generatePage();
diff --git a/planning/_projectCommon.php b/planning/_projectCommon.php
index d579cbb..112d9ef 100755
--- a/planning/_projectCommon.php
+++ b/planning/_projectCommon.php
@@ -1,13 +1,15 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2013 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
+/**
+ * Copyright (c) 2013, 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:
- *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
- *******************************************************************************/
-$App->setOutDated( '2011-11-11', '<a href="https://projects.eclipse.org/releases/luna">Luna</a> is a past version of Eclipse. Please visit our <a href="/downloads/">download</a> page for the latest version of Eclipse. ' );
-?>
+ *   Wayne Beaton (Eclipse Foundation)- initial API and implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+$App->setOutDated('2011-11-11', '<a href="https://projects.eclipse.org/releases/luna">Luna</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/planning/index.php b/planning/index.php
index fc7bf3a..83e4116 100755
--- a/planning/index.php
+++ b/planning/index.php
@@ -1,21 +1,34 @@
 <?php
+/**
+ * Copyright (c) 2014, 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:
+ *   Christopher Guindon (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");
-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'
+$Theme = $App->getThemeClass();
+
+include ($App->getProjectCommon());
 
 $pageTitle = "Eclipse Planning Council";
-$pageKeywords = "Eclipse Planning Council";
-$pageAuthor = "David Williams";
 
-// Paste your HTML content between the markers!
-ob_start ();
-include("content/en_" . $App->getScriptName());
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("Eclipse Planning Council");
+$Theme->setPageAuthor("David Williams");
+
+ob_start();
+include ("content/en_" . $App->getScriptName());
 $html = ob_get_clean();
 
-// Generate the web page
-$App->generatePage ('solstice', $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+$Theme->setHtml($html);
+$Theme->generatePage();
diff --git a/planning/poll2015.php b/planning/poll2015.php
index b49f4eb..9639740 100755
--- a/planning/poll2015.php
+++ b/planning/poll2015.php
@@ -1,103 +1,91 @@
-<?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();
+<?php
+/**
+ * Copyright (c) 2014, 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:
+ * Chris Aniszczyk - Initial implementation
+ * Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 
-       #*****************************************************************************
-       #
-       # poll2014.php
-       #
-       # Author:                   Chris Aniszczyk
-       # Date:                     2014-01-28
-       #
-       # Description: Quick poll to get input for Luna +1 Sim. Release name. 
-       #
-       #
-       #****************************************************************************
-       
-       #
-       # Begin: page-specific settings.  Change these. 
-       $pageTitle           = "Community Poll Vote";
-       $pageKeywords = "Eclipse Simultaneous Release 2015";
-       $pageAuthor          = "Chris Aniszczyk";
-       $theme = "solstice";
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
 
-	   # Polls are good for 3 months!
-	   $App->usePolls();
+$App = new App();
+$Theme = $App->getThemeClass();
 
-	   # Poll 1
-	   $Poll = new Poll(10, "Vote: What is your favorite name for the 2015 Eclipse Simultaneous Release?");
-	   $Poll->addOption(1, "Magellan"); 
-           $Poll->addOption(2, "Mandelbrot");
-	   $Poll->addOption(3, "Mars");
-	   $Poll->addOption(4, "Mercury"); 
-	   $Poll->addOption(5, "Meridian");
-	   $Poll->addOption(6, "Metis");
-	   $Poll->addOption(7, "Mira");
-	   $Poll->addOption(8, "Mimas");
-	   $Poll->addOption(9, "Mithril");
-	   $Poll->noGraph();  # uncomment to disable bar graph
-	   $pollHTML = $Poll->getHTML();
+$pageTitle = "Community Poll Vote";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("Eclipse Simultaneous Release 2015");
+$Theme->setPageAuthor("Chris Aniszczyk");
 
-	   $Poll->requireLogin(); # no anonymous votes
+// Polls are good for 3 months!
+$App->usePolls();
 
-	       # Paste your HTML content between the markers!   
-	ob_start();
-	?>            
+// Poll 1
+$Poll = new Poll(10, "Vote: What is your favorite name for the 2015 Eclipse Simultaneous Release?");
+$Poll->addOption(1, "Magellan");
+$Poll->addOption(2, "Mandelbrot");
+$Poll->addOption(3, "Mars");
+$Poll->addOption(4, "Mercury");
+$Poll->addOption(5, "Meridian");
+$Poll->addOption(6, "Metis");
+$Poll->addOption(7, "Mira");
+$Poll->addOption(8, "Mimas");
+$Poll->addOption(9, "Mithril");
+$Poll->noGraph(); // uncomment to disable bar graph
+$pollHTML = $Poll->getHTML();
+
+$Poll->requireLogin(); // no anonymous votes
+
+// Paste your HTML content between the markers!
+ob_start();
+?>
+<div id="maincontent">
+  <h1><?php print $pageTitle; ?></h1>
+  <h2>Help decide the name for the 2015 Eclipse Simultaneous Release!</h2>
+  <p>
+    There will be an Eclipse Simultaneous Release on the fourth Wednesday of
+    June, 2015. But what to call it? Please vote, for your favorite name for the
+    2015 release. Remember, the simultaneous release name is an informal <i>marketing
+      name</i>. It should be recognizable, pronounceable, relatively distinct
+    and not obvious to confuse with other software or trademarks. Be sure to
+    consider how it sounds in context, such as...
+  </p>
+  <p>
+    <i>"Hey, go download the <b>Eclipse xyz Release</b> and see all the cool
+      stuff in there!"
+    </i>
+  </p>
+  <p>
+    The following list was arrived at with input from the community (see <a
+      href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=422883"
+    >bug 422883</a>) and discussions inside the Eclipse Planning Council.
+  </p>
+  <div style="padding: 5px; margin-left: 1%; margin-right: 1%;">
+    <p>
+      Magellan: 23 %<br /> Mandelbrot: 7 %<br /> Mars: 12 %<br /> Mercury: 26 %<br />
+      Meridian: 7 %<br /> Metis: 3 %<br /> Mira: 14 %<br /> Mimas: 2 %<br />
+      Mithril: 7 %<br /> <b>Total votes: 407</b><br />
+    </p>
+  </div>
+  <p>Thanks for your vote and your help with Eclipse! The poll is closed and
+    names are under review.</p>
+  <p>
+    <b>Note: The Planning Council reserves the right to make the final decision,
+      in case some popularly voted item is later found to be unsuitable for some
+      reason.</b></p>
 
 
-	<div id="maincontent" style="width: 90%; padding: 5%;">
+  <p>Current time: <?php echo date("d/m/y : H:i (T)", time()); ?></p>
+</div>
+<?php
+$html = ob_get_contents();
+ob_end_clean();
 
-	              <h1><?= $pageTitle ?></h1>
-	                     <h2>Help decide the name for the 2015 Eclipse Simultaneous Release!</h2>
-	
-	                     <p>There will be an Eclipse Simultaneous Release on the fourth Wednesday of
-	                     June, 2015. But what to call it? Please vote, for your favorite name for the 2015
-	                     release. Remember, the simultaneous release name is an informal <i>marketing name</i>. It
-	                     should be recognizable, pronounceable, relatively distinct and not obvious
-	                     to confuse with other software or trademarks. Be sure to
-	                     consider how it sounds in context, such as...</p>
-						
-						<p>
-	                      <i>"Hey, go download the <b>Eclipse xyz Release</b> and see all the cool stuff in there!"</i>
-						</p>
-
-	                     <p>The following list was arrived at with input from the community (see
-	                     <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=422883">bug
-	                     422883</a>) and discussions inside the Eclipse Planning Council.</p>
-
-                                    <div style="padding: 5px; margin-left: 1%; margin-right: 1%;">
-
-<p>
-Magellan: 23 %<br />
-Mandelbrot: 7 %<br />
-Mars: 12 %<br />
-Mercury: 26 %<br />
-Meridian: 7 %<br />
-Metis: 3 %<br />
-Mira: 14 %<br />
-Mimas: 2 %<br />
-Mithril: 7 %<br />
-
-<b>Total votes: 407</b><br />
-</p>
-                                    </div>
-
-
-	                     <p>Thanks for your vote and your help with Eclipse! The poll is closed and names are under review.</p>              
-
-	                     <p><b>Note: The Planning Council reserves the right to make the final decision, in case some
-	                     popularly voted item is later found to be unsuitable for some reason.</b><p>
-
-	                     <p>Current time: <?php echo date("d/m/y : H:i (T)", time()); ?></p>
-
-	</div>
-
-	<?php
-	       $html = ob_get_contents();
-	       ob_end_clean();
-
-	       # Generate the web page
-	       $App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
-	?>
-
+$Theme->setHtml($html);
+$Theme->generatePage();
