diff --git a/.project b/.project
index 7a78ba2..a792aac 100644
--- a/.project
+++ b/.project
@@ -6,6 +6,11 @@
 	</projects>
 	<buildSpec>
 		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
 			<name>org.eclipse.wst.validation.validationbuilder</name>
 			<arguments>
 			</arguments>
@@ -23,6 +28,8 @@
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>net.vtst.ow.eclipse.less.nature</nature>
 		<nature>org.eclipse.php.core.PHPNature</nature>
 	</natures>
 </projectDescription>
diff --git a/_projectCommon.php b/_projectCommon.php
new file mode 100644
index 0000000..b03a191
--- /dev/null
+++ b/_projectCommon.php
@@ -0,0 +1,24 @@
+<?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
+ *
+ * Contributors:
+ *    Christopher Guindon (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">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/assets/public/stylesheets/styles.min.css b/assets/public/stylesheets/styles.min.css
index e78fd07..cb8506f 100644
--- a/assets/public/stylesheets/styles.min.css
+++ b/assets/public/stylesheets/styles.min.css
@@ -1 +1 @@
-div#novaContent.container-full{background:url("../images/background.jpg");color:#fff}p{font-size:15px}.block-box li{font-size:15px}.second-level-menu{font-size:1.6em;margin:1.7em 0 1.5em 73px}.second-level-menu li a:link,.second-level-menu li a:visited{color:#fff;font-weight:600}.second-level-menu li a:hover{color:#F7941E}p.projects a:link,p.projects a:visited{color:#F7941E}p.projects a:hover{color:#ccc}
\ No newline at end of file
+h1,h3{color:#fff}div#novaContent.container-full{background:url("../images/background.jpg");color:#fff}p{font-size:15px}.block-box li{font-size:15px}.second-level-menu{font-size:1.6em;margin:1.7em 0 1.5em 73px}.second-level-menu li a:link,.second-level-menu li a:visited{color:#fff;font-weight:600}.second-level-menu li a:hover{color:#F7941E}p.projects a:link,p.projects a:visited{color:#F7941E}p.projects a:hover{color:#ccc}
\ No newline at end of file
diff --git a/assets/src/less/styles.less b/assets/src/less/styles.less
index a3756d3..9278dd4 100644
--- a/assets/src/less/styles.less
+++ b/assets/src/less/styles.less
@@ -1,3 +1,7 @@
+h1, h3{
+  color:#fff;
+}
+
 div#novaContent.container-full{
 	background:url("../images/background.jpg");
   color:#fff;
diff --git a/content/en_index.php b/content/en_index.php
index c599043..7d12a52 100644
--- a/content/en_index.php
+++ b/content/en_index.php
@@ -27,52 +27,103 @@
 </div>
  -->
 
-<div class="container" style="padding-top:1.5em;">
+<div class="container" style="padding-top: 1.5em;">
+  <div class="col-md-24" style="padding-left: 0;">
+    <div class="alert alert-danger" role="alert">
+      <a href="https://projects.eclipse.org/releases/lunaindigo">Luna</a> is
+      a past version of Eclipse. Please visit our <a href="/downloads/">download</a>
+      page for the latest version of Eclipse.
+    </div>
+  </div>
   <div class="col-md-15">
-		<h1>Are you ready for <span class="fw-600">Java&trade; 8?</span></h1>
-	  <p class="projects">Eclipse Luna includes official support for Java 8 in the 
-	  <a href="/jdt">Java development tools</a>, 
-	  <a href="/pde">Plug-in Development Tools</a>, 
-	  <a href="/objectteams">Object Teams</a>, 
-	  <a href="/ecf">Eclipse Communication Framework</a>, 
-	  <a href="/m2e">Maven integration</a>, 
-	  <a href="/Xtext">Xtext</a>, 
-	  <a href="/xtend">Xtend</a>, 
-	  <a href="/webtools">Web Tools Platform</a>, and 
-	  <a href="/mat">Memory Analyzer</a>.</p>
-		<ul class="second-level-menu list-inline clearfix">
-		  <li class="col-md-12"><i class="fa fa-star orange fa-fw"></i> <a href="//projects.eclipse.org/releases/luna">Projects</a></li>
-			<li class="col-md-12"><i class="fa fa-download orange fa-fw"></i> <a href="/downloads/packages/release/luna/sr2">Downloads</a></li>
-			<li class="col-md-12"><i class="fa fa-gears orange fa-fw"></i> <a href="//wiki.eclipse.org/Eclipse_DemoCamps_Luna_2014">Demo Camps</a></li>
-			<li class="col-md-12"><i class="fa fa-users orange fa-fw"></i> <a href="/donate/">Friends of Luna</a></li>
-		</ul>
-		<div class="block-box">
-	    <h3>Highlights</h3>
-	      <div class="content">
-	      <ul class="fa-ul">
-	        <li><i class="fa fa-li fa-chevron-circle-right orange"></i> Java 8 support including language enhancements, search and refactoring, Quick Assist and Clean Up to migrate anonymous classes to lambda expressions and back, and new formatter options for lambdas.</li>
-					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> The Eclipse workbench provides a new dark theme which includes syntax highlighter settings for several programming languages.</li>
-					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> <a href="/paho/">Paho</a> provides open source implementations of open and standard messaging protocols that support current and emerging requirements of M2M integration with Web and Enterprise middleware and applications.</li>
-					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> The <a href="/ecf/">Eclipse Communication Project's (ECF)</a> specification-compliant implementation of OSGi Remote Service/Remote Service Admin has been enhanced to support the use of Java 8's CompletableFuture for asynchronous remote services.</li>
-					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> <a href="/sirius/">Sirius</a> allows architects to easily create their own graphical modeling workbenches by leveraging the Eclipse modeling technologies, including <a href="/emf">Eclipse Modeling Framework (EMF)</a> and <a href="/gmf/">Graphical Modeling Framework (GMF)</a>. <a href="/ecoretools/">EcoreTools</a>, the graphical modeler for Ecore, has been completely re-implemented based on Sirius.</li>
-			  </ul>
-	    </div>
-		</div>
-		<p><a href="/home" class="btn btn-warning">Go to Eclipse.org</a></p><br/><br/>
+    <h1>
+      Are you ready for <span class="fw-600">Java&trade; 8?</span>
+    </h1>
+    <p class="projects">
+      Eclipse Luna includes official support for Java 8 in the <a
+        href="/jdt">Java development tools</a>, <a href="/pde">Plug-in
+        Development Tools</a>, <a href="/objectteams">Object Teams</a>,
+      <a href="/ecf">Eclipse Communication Framework</a>, <a href="/m2e">Maven
+        integration</a>, <a href="/Xtext">Xtext</a>, <a href="/xtend">Xtend</a>,
+      <a href="/webtools">Web Tools Platform</a>, and <a href="/mat">Memory
+        Analyzer</a>.
+    </p>
+    <ul class="second-level-menu list-inline clearfix">
+      <li class="col-md-12"><i class="fa fa-star orange fa-fw"></i> <a
+        href="//projects.eclipse.org/releases/luna">Projects</a></li>
+      <li class="col-md-12"><i class="fa fa-download orange fa-fw"></i>
+        <a href="/downloads/packages/release/luna/sr2">Downloads</a></li>
+      <li class="col-md-12"><i class="fa fa-gears orange fa-fw"></i> <a
+        href="//wiki.eclipse.org/Eclipse_DemoCamps_Luna_2014">Demo Camps</a></li>
+      <li class="col-md-12"><i class="fa fa-users orange fa-fw"></i> <a
+        href="/donate/">Friends of Luna</a></li>
+    </ul>
+    <div class="block-box">
+      <h3>Highlights</h3>
+      <div class="content">
+        <ul class="fa-ul">
+          <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
+            Java 8 support including language enhancements, search and
+            refactoring, Quick Assist and Clean Up to migrate anonymous
+            classes to lambda expressions and back, and new formatter
+            options for lambdas.</li>
+          <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
+            The Eclipse workbench provides a new dark theme which
+            includes syntax highlighter settings for several programming
+            languages.</li>
+          <li><i class="fa fa-li fa-chevron-circle-right orange"></i> <a
+            href="/paho/">Paho</a> provides open source implementations
+            of open and standard messaging protocols that support
+            current and emerging requirements of M2M integration with
+            Web and Enterprise middleware and applications.</li>
+          <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
+            The <a href="/ecf/">Eclipse Communication Project's (ECF)</a>
+            specification-compliant implementation of OSGi Remote
+            Service/Remote Service Admin has been enhanced to support
+            the use of Java 8's CompletableFuture for asynchronous
+            remote services.</li>
+          <li><i class="fa fa-li fa-chevron-circle-right orange"></i> <a
+            href="/sirius/">Sirius</a> allows architects to easily
+            create their own graphical modeling workbenches by
+            leveraging the Eclipse modeling technologies, including <a
+            href="/emf">Eclipse Modeling Framework (EMF)</a> and <a
+            href="/gmf/">Graphical Modeling Framework (GMF)</a>. <a
+            href="/ecoretools/">EcoreTools</a>, the graphical modeler
+            for Ecore, has been completely re-implemented based on
+            Sirius.</li>
+        </ul>
+      </div>
+    </div>
+    <p>
+      <a href="/home" class="btn btn-warning">Go to Eclipse.org</a>
+    </p>
+    <br />
+    <br />
   </div>
 
   <div class="col-md-8 col-md-offset-1">
-    <div style="text-align: center;padding:25px 0;">
-      <h3>Become a <span class="fw-600">Friend of Eclipse</span></h3>
-      <p><a href="/donate" class="btn btn-warning">Donate now</a></p>
+    <div style="text-align: center; padding: 25px 0;">
+      <h3>
+        Become a <span class="fw-600">Friend of Eclipse</span>
+      </h3>
+      <p>
+        <a href="/donate" class="btn btn-warning">Donate now</a>
+      </p>
     </div>
-	  <div class="block-box">
-		 <h3><i class="fa fa-twitter"></i>  Recent <span class="fw-700">#eclipseluna</span> tweets</h3>
-		   <div class="content">
-	     <a class="twitter-timeline"  href="https://twitter.com/search?q=%23eclipseluna"  data-widget-id="470988115096510464" data-chrome="noheader noscrollbar transparent">Tweets about "#eclipseluna"</a>
-       <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
-	     </div>
-		  </div>
-	  </div>
+    <div class="block-box">
+      <h3>
+        <i class="fa fa-twitter"></i> Recent <span class="fw-700">#eclipseluna</span>
+        tweets
+      </h3>
+      <div class="content">
+        <a class="twitter-timeline"
+          href="https://twitter.com/search?q=%23eclipseluna"
+          data-widget-id="470988115096510464"
+          data-chrome="noheader noscrollbar transparent">Tweets about
+          "#eclipseluna"</a>
+        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
+      </div>
+    </div>
   </div>
 </div>
+</div>
diff --git a/index.php b/index.php
index b6494dd..27cd3bc 100644
--- a/index.php
+++ b/index.php
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *    Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *    Eric Poirier (Eclipse Foundation)
  *******************************************************************************/
 
 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
@@ -17,19 +18,8 @@
 	$App 	= new App();
 	$Nav	= new Nav();
 	$Menu 	= new Menu();
-	
-	#redirect the user if he already saw the luna landing page
-	$uri = explode("/", $_SERVER['REQUEST_URI']);
-	if ($uri[1] != 'luna') {
-		if (!isset($_COOKIE['luna'])){
-			setcookie("luna", "Are you ready for Java 8?", time()+3600*24*365, "/", ".eclipse.org");
-		}
-		else {
-			header('Location: /home/index.php');
-			exit();
-		}
-	}
-	
+  include($App->getProjectCommon());
+
 	# Begin: page-specific settings.  Change these.
 	$pageTitle 		= "Eclipse Luna";
 	$pageKeywords	= "eclipse Luna, release, simultaneous, release train, luna";
@@ -49,4 +39,4 @@
 	# 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("solstice", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+	$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
diff --git a/planning/_projectCommon.php b/planning/_projectCommon.php
index f78b236..d579cbb 100755
--- a/planning/_projectCommon.php
+++ b/planning/_projectCommon.php
@@ -9,10 +9,5 @@
  * Contributors:
  *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
  *******************************************************************************/
-$theme = "solstice";
-$App->Promotion = TRUE;
-
-$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/luna">Luna</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
new file mode 100644
index 0000000..24db9bd
--- /dev/null
+++ b/planning/content/en_index.php
@@ -0,0 +1,18 @@
+<!-- include empty lef nav col for now -->
+<div id="leftcol">
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</div>
+
+<div id="maincontent">
+  <div id="midcolumn">
+    <h1><?= $pageTitle ?></h1>
+    <h2>Purpose</h2>
+    <p>
+      This 'planning' directory at this URL is to hold Planning Council
+      specific web pages and web apps. Most Planning Council information
+      is available on the <a
+        href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
+        Council Wiki Pages</a>
+    </p>
+  </div>
+</div>
\ No newline at end of file
diff --git a/planning/index.php b/planning/index.php
index 17ce25e..fc7bf3a 100755
--- a/planning/index.php
+++ b/planning/index.php
@@ -1,36 +1,21 @@
-<?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'
-
-
-#
-# Begin: page-specific settings.
-$pageTitle 		= "Eclipse Planning Council";
-$pageKeywords	= "Eclipse Planning Council";
-$pageAuthor		= "David Williams";
-$theme = "solstice";
-# Paste your HTML content between the markers!
-ob_start();
-?>
-
-
-	<!-- include empty lef nav col for now -->
-	<div id="leftcol">
-	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-	</div>
-	
-<div id="maincontent">
-<div id="midcolumn">
-<h1><?= $pageTitle ?></h1>
-<h2>Purpose</h2>
-<p>This 'planning' directory at this URL is to hold Planning Council specific web
-pages and web apps. Most Planning Council information is available on
-the <a href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
-Council Wiki Pages</a></p>
-</div>
-</div> 
-
 <?php
-$html = ob_get_contents();
-ob_end_clean();
 
-# Generate the web page
-$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+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'
+
+$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());
+$html = ob_get_clean();
+
+// Generate the web page
+$App->generatePage ('solstice', $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
