diff --git a/_projectCommon.php b/_projectCommon.php
index 4b307b6..5847a22 100644
--- a/_projectCommon.php
+++ b/_projectCommon.php
@@ -1,12 +1,20 @@
 <?php
+/**
+ * Copyright (c) 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 API and implementation
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
 
-$Nav->setLinkList(null);
-
-$pageAuthor = isset($pageAuthor) ? $pageAuthor : "";
-$pageKeywords = isset($pageKeywords) ? $pageKeywords : "";
-$theme = "Solstice";
-
+// Define your project-wide Nav bars here.
+$Nav = new Nav();
 $Nav->addCustomNav("About This Project", "https://projects.eclipse.org/projects/technology.dash", "", 1);
 $Nav->addCustomNav("Wiki", "http://wiki.eclipse.org/Dash_Project", "", 1);
-
-?>
+$Theme->setNav($Nav);
\ No newline at end of file
diff --git a/athena/.htaccess b/athena/.htaccess
deleted file mode 100644
index 67b66c5..0000000
--- a/athena/.htaccess
+++ /dev/null
@@ -1,2 +0,0 @@
-RewriteEngine On
-RewriteRule	  ^(.*)    http://www.eclipse.org/archived [R,L]
\ No newline at end of file
diff --git a/athena/.project b/athena/.project
deleted file mode 100644
index 456ba7f..0000000
--- a/athena/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>dathena</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/content/en_index.php b/content/en_index.php
new file mode 100644
index 0000000..f0176c1
--- /dev/null
+++ b/content/en_index.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright (c) 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 API and implementation
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+?>
+<div id="maincontent">
+  <div id="midcolumn">
+    <h2>What is the Eclipse Dash Project?</h2>
+    <p>Project Dash is a place where the community itself can collaborate
+      on tools for community awareness and collaboration in support of our
+      ultimate objective of committer quality and cooperation. This is very
+      much a research project as we are not entirely sure what these tools
+      will be.
+    </p>
+    <h2>Components</h2>
+    <h3>Eclipse Project Handbook</h3>
+    <p>This document provides you with the information that you need to
+      create a new Eclipse open source project or become a committer on an
+      existing one.
+    </p>
+    <ul>
+      <li>View <a href="/projects/handbook">the handbook</a>;</li>
+      <li>Clone <a href="https://git.eclipse.org/r/#/admin/projects/dash/org.eclipse.dash.handbook">the repository</a> (via Gerrit); or</li>
+      <li>Report <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Dash&component=Handbook">an issue</a>.</li>
+    </ul>
+    <h3>Gently Dependency Scanner</h3>
+    <p>
+      <strong>Coming soon!</strong>
+    </p>
+    <p>This is a collection of tools for rooting through content to
+      determine dependencies, legal documentation conformance, etc.
+    </p>
+    <h2>The Rest of The Story</h2>
+    <p>
+      See our <a href="http://wiki.eclipse.org/Dash_Project">wiki pages</a>
+      for discussions, directions, plans, accomplishments, and all the
+      rest.
+    </p>
+  </div>
+</div>
+<div id="rightcolumn">
+  <div class="sideitem">
+    <h6>Incubation</h6>
+    <div style="text-align: center">
+      <a href="/projects/what-is-incubation.php"><img
+        src="/images/egg-incubation.png" alt="Incubation" /></a>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/index.php b/index.php
index 0062661..1755312 100644
--- a/index.php
+++ b/index.php
@@ -1,79 +1,31 @@
 <?php
-/********************************************************************************
- * Copyright (c) 2005,2017 The Eclipse Foundation, and others
+/**
+ * Copyright (c) 2005, 2017, 2018 Eclipse Foundation and others.
  *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 1.0 which is available at
- * http://www.eclipse.org/legal/epl-v10.html.
+ * 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/
  *
- * SPDX-License-Identifier: EPL-1.0
- ********************************************************************************/
+ * Contributors:
+ *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
+ *
+ * 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();
+$Theme = $App->getThemeClass();
+include($App->getProjectCommon());
 
+// Begin: page-specific settings.  Change these.
 $pageTitle = "The Eclipse Dash Project";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("Eclipse Dash Project, Eclipse Dash, tools for community");
 
+// Place your html content in a file called content/en_pagename.php
 ob_start();
-?>
-<div id="maincontent">
-	<div id="midcolumn">
+include("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
 
-		<h2>What is the Eclipse Dash Project?</h2>
-		<p>Project Dash is a place where the community itself can collaborate
-			on tools for community awareness and collaboration in support of our
-			ultimate objective of committer quality and cooperation. This is very
-			much a research project as we are not entirely sure what these tools
-			will be.</p>
-
-		<h2>Components</h2>
-
-		<h3>Eclipse Project Handbook</h3>
-
-		<p>This document provides you with the information that you need to
-			create a new Eclipse open source project or become a committer on an
-			existing one.</p>
-			
-		<ul>
-		<li>View <a href="/projects/handbook">the handbook</a>;</li>
-		<li>Clone <a href="https://git.eclipse.org/r/#/admin/projects/dash/org.eclipse.dash.handbook">the repository</a> (via Gerrit); or</li>
-		<li>Report <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Dash&component=Handbook">an issue</a>.</li>
-		</ul>
-		
-		<h3>Gently Dependency Scanner</h3>
-		<p>
-			<strong>Coming soon!</strong>
-		</p>
-		<p>This is a collection of tools for rooting through content to
-			determine dependencies, legal documentation conformance, etc.</p>
-
-		<h2>The Rest of The Story</h2>
-		<p>
-			See our <a href="http://wiki.eclipse.org/Dash_Project">wiki pages</a>
-			for discussions, directions, plans, accomplishments, and all the
-			rest.
-		</p>
-
-	</div>
-</div>
-
-<div id="rightcolumn">
-	<div class="sideitem">
-		<h6>Incubation</h6>
-		<div style="text-align: center">
-			<a href="/projects/what-is-incubation.php"><img
-				src="/images/egg-incubation.png" alt="Incubation" /></a>
-		</div>
-	</div>
-</div>
-
-<?php
-$html = ob_get_contents();
-ob_end_clean();
-
-$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
+$Theme->setHtml($html);
+$Theme->generatePage();
\ No newline at end of file
