diff --git a/_projectCommon.php b/_projectCommon.php
new file mode 100644
index 0000000..b9a566f
--- /dev/null
+++ b/_projectCommon.php
@@ -0,0 +1,3 @@
+<?php
+$theme = "Nova";
+?>
\ No newline at end of file
diff --git a/committers-alumni.php b/committers-alumni.php
index f487486..c57e4ea 100644
--- a/committers-alumni.php
+++ b/committers-alumni.php
@@ -32,14 +32,11 @@
 </td>
 <ul>
 <?php
-include "/home/data/httpd/eclipse-php-classes/system/dbconnection_foundation_ro.class.php";
-$_dbc = new DBConnectionFoundation();
-$_dbh = $_dbc->connect();
 $sql = "SELECT DISTINCT PersonID AS PID FROM PeopleProjects
 		WHERE Relation = 'CE'
 		  AND InactiveDate IS NULL
 		  ";
-$result = mysql_query($sql,$_dbh);
+$result = $App->foundation_sql($sql);
 $emeritus = array();
 while( $row = mysql_fetch_assoc($result) ) {
 	$emeritus[$row['PID']] = 1;
@@ -53,7 +50,7 @@
 		  		  AND InactiveDate IS NULL)
 		  ORDER BY LName, FName
 		  ";
-$result = mysql_query($sql,$_dbh);
+$result = $App->foundation_sql($sql);
 $people = array();
 while( $row = mysql_fetch_assoc($result) ) {
 	$people[] = $row;
@@ -125,8 +122,8 @@
 }
 ?>
 <p>
-<hr>
-<div style="font-size: 80%"><sup>1</sup>
+<hr style="margin-top: 5px; margin-bottom: 5px;"/>
+<div style="font-size: 60%"><sup>1</sup>
 Being a Committer is a privilege that is earned by 
 contributing actively, and showing discipline and good judgment. It is a responsibility 
 that is not given, nor be treated, lightly. At the same
diff --git a/committers-emeritus.php b/committers-emeritus.php
index 7dd1ba9..729d812 100644
--- a/committers-emeritus.php
+++ b/committers-emeritus.php
@@ -35,10 +35,7 @@
 		  AND PeopleProjects.InactiveDate IS NULL
 		  ORDER BY LName, FName
 		  ";
-include "/home/data/httpd/eclipse-php-classes/system/dbconnection_foundation_ro.class.php";
-$_dbc = new DBConnectionFoundation();
-$_dbh = $_dbc->connect();
-$result = mysql_query($sql,$_dbh);
+$result = $App->foundation_sql($sql);
 $showing = -1;
 while( $row = mysql_fetch_assoc($result) ) {
 	if( $showing == $row['PID'] ) {
@@ -59,8 +56,8 @@
 }
 ?>
 </div>
-<hr>
-<div style="font-size: 80%"><sup>1</sup>
+<hr style="margin-top: 5px; margin-bottom: 5px;">
+<div style="font-size: 60%"><sup>1</sup>
 Being a Committer is a privilege that is earned by 
 contributing actively, and showing discipline and good judgment. It is a responsibility 
 that is not given or treated lightly. At the same
diff --git a/common/project_summary.css b/common/project_summary.css
index b25018b..f2d834c 100644
--- a/common/project_summary.css
+++ b/common/project_summary.css
@@ -391,4 +391,8 @@
   border-left:1px solid #8c8cb2;
   border-right:1px solid #8c8cb2}
 .blueonwhitefg{
-  background:#666699}
\ No newline at end of file
+  background:#666699}
+  
+#novaContent.faux {
+	background: white;
+}
\ No newline at end of file
diff --git a/common/shared_functions.php b/common/shared_functions.php
index be259eb..94fae6d 100644
--- a/common/shared_functions.php
+++ b/common/shared_functions.php
@@ -66,32 +66,6 @@
 	<?php
 }
 
-function get_foundation_connection() {
-	global $fdbh;
-
-	if(mysql_select_db('eclipsefoundation', $fdbh)) {
-		return;
-	}
-
-	// Get a Foundation DB connection
-	$dbconnect = new DBConnectionFoundation();
-	$fdbh = $dbconnect->connect();
-	mysql_error_check();
-}
-
-function get_portal_connection() {
-	global $pdbh;
-
-	if(mysql_select_db('myfoundation_prod', $pdbh)) {
-		return;
-	}
-
-	// Get a Foundation DB connection
-	$dbconnect = new DBConnectionPortalRW();
-	$pdbh = $dbconnect->connect();
-	mysql_error_check();
-}
-
 // Generic MYSQL error checker
 function mysql_error_check() {
 	if(mysql_errno() != 0) {
diff --git a/index.php b/index.php
index c24be92..ca01dc1 100644
--- a/index.php
+++ b/index.php
@@ -27,8 +27,8 @@
 		<br/>
 		<div id="links">
 			<div class="link">
-				<a href="/projects/whatsnew.php"><img src="images/whatsnew.png" alt="What's New"/></a>
-				<a class="heading" href="/projects/whatsnew.php">What's New?</a>
+				<a href="whatsnew.php"><img src="images/whatsnew.png" alt="What's New"/></a>
+				<a class="heading" href="whatsnew.php">What's New?</a>
 				<p class="subText">Find out what's new in the Eclipse Projects: upcoming project reviews, new project proposals, changes to the development process, etc.</p>
 			</div>
 			<div class="link">
@@ -42,8 +42,8 @@
 				<p class="subText">If you're just looking to download one or more of the Eclipse Projects, you can either navigate to the project through the list of projects (above) or the list of downloads (here).</p>
 			</div>
 			<div class="link">
-				<a href="/projects/searchpage.php"><img src="<?= $iconDir ?>/actions/system-search.png" alt="Search the projects"/></a>
-				<a class="heading" href="/projects/searchpage.php">Search the projects</a>
+				<a href="searchpage.php"><img src="<?= $iconDir ?>/actions/system-search.png" alt="Search the projects"/></a>
+				<a class="heading" href="searchpage.php">Search the projects</a>
 				<p class="subText">Look for a project that implements a specific technology. Look for a certain API. Or just look around...</p>
 			</div>
 			<div class="link">
diff --git a/indexNova.php b/indexNova.php
deleted file mode 100644
index ac0ee12..0000000
--- a/indexNova.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?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'
-/* 221934 - this page to remain on eclipse.org */
-
-$App->Promotion = TRUE;
-
-$pageTitle 		= "Projects Gateway";
-$pageAuthor		= "";
-$pageKeywords	= "Eclipse, projects, plugin, plugins, download, plan";
-
-include( '_commonLeftNav.php' );
-$iconDir		= "http://dev.eclipse.org/huge_icons";
-
-ob_start();
-?>
-<div id="fullcolumn">
-		<div id="infoDiv">
-		<p>Eclipse is a collection of open source projects
-			built on the Equinox OSGi run-time. <p>Eclipse started
-			as a Java IDE, but has since grown to be much, much
-			more. Eclipse projects now cover static and dynamic
-			languages; thick-client, thin-client, and server-side
-			frameworks; modeling and business reporting; embedded and
-			mobile; and, yes, we still have the best Java IDE.<p>
-			This page is designed to be a gateway into the
-			projects for users, adopters, team members, and the
-			merely curious.
-		</p>
-		</div>
-		<br/>
-		<div id="links">
-			<div class="link">
-				<a href="/projects/whatsnew.php"><img src="images/whatsnew.png" alt="What's New"/></a>
-				<a class="heading" href="/projects/whatsnew.php">What's New?</a>
-				<p class="subText">Find out what's new in the Eclipse Projects: upcoming project reviews, new project proposals, changes to the development process, etc.</p>
-			</div>
-			<div class="link">
-				<a href="become_a_member/"><img src="<?= $iconDir ?>/emblems/emblem-system.png" alt="Show me all the projects"/></a>
-				<a class="heading" href="become_a_member/">Show me all the projects</a>
-				<p class="subText">See a list of all the projects and sub-projects hosted at Eclipse. Click through the list to discover the projects' status, activity, contributors, plans, downloads, and more.</p>
-			</div>
-			<div class="link">
-				<a href="listofprojects.php"><img src="<?= $iconDir ?>/actions/go-bottom.png" alt="Membership FAQs"/></a>
-				<a class="heading" href="listofprojects.php">Take me to the downloads</a>
-				<p class="subText">If you're just looking to download one or more of the Eclipse Projects, you can either navigate to the project through the list of projects (above) or the list of downloads (here).</p>
-			</div>
-			<div class="link">
-				<a href="/projects/searchpage.php"><img src="<?= $iconDir ?>/actions/system-search.png" alt="Search the projects"/></a>
-				<a class="heading" href="/projects/searchpage.php">Search the projects</a>
-				<p class="subText">Look for a project that implements a specific technology. Look for a certain API. Or just look around...</p>
-			</div>
-			<div class="link">
-				<a href="dev_process/index-quick.php"><img src="http://dev.eclipse.org/custom_icons/cartoon-person64x64.png" alt="Help me lead my project"/></a>
-				<a class="heading" href="dev_process/index-quick.php">Help me lead my project</a>
-				<p class="subText">Easy to follow instructions for the official Eclipse processes and rules. Includes everything you need to know about the Eclipse IP Policy. Useful for committers, contributors, and project leaders.</p>
-			</div>
-			<div class="link">
-				<a href="committers-emeritus.php"><img src="images/emeritus.gif" alt="Committers Emeritus"/></a>
-				<a class="heading" href="committers-emeritus.php">Committers Emeritus</a>
-				<p class="subText">Former Committers who have made significant contributions to the long term success of Eclipse are listed as Committers Emeritus. All former Committers are listed on a similar page as Committer Alumni.</p>
-			</div>	
-			<center>
-			<p><a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&version=unspecified&component=Website&priority=P3&bug_severity=normal&bug_status=NEW&bug_file_loc=http%3A%2F%2F&short_desc=&comment=&commentprivacy=0&keywords=&dependson=&blocked=&maketemplate=Remember%20values%20as%20bookmarkable%20template&form_name=enter_bug&assigned_to=phoenix.ui-inbox%40eclipse.org&qa_contact=">Report errors in, or request improvements to, this page</a></p>
-			</center>		
-		</div>
-
-
-</div><!-- midcolumn -->
-
-
-<?php
-	# Paste your HTML content between the EOHTML markers!
-	$html = ob_get_contents();
-	ob_end_clean();
-	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="projects.css"/>');
-	# Generate the web page
-	$App->generatePage('Nova', $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
-
-?>
\ No newline at end of file
diff --git a/index_old.php b/index_old.php
deleted file mode 100644
index 608429b..0000000
--- a/index_old.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?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'
-/* 221934 - this page to remain on eclipse.org */
-
-$App->Promotion = TRUE;
-
-$pageTitle 		= "Projects Gateway";
-$pageAuthor		= "";
-$pageKeywords	= "Eclipse, projects, plugin, plugins, download, plan";
-
-include( '_commonLeftNav.php' );
-$iconDir		= "http://dev.eclipse.org/huge_icons";
-
-ob_start();
-?><style>
-.downloadsContainer {
-	width:100%;
-	float:left;
-	clear:all;
-	border:0px;
-	border-bottom:1px dashed #222222;
-}
-
-.downloadsContainer a {
-	display:block;
-}
-
-.downloadsContainer:hover {
-	background-color:#F8F8F8;
-	padding:0px;
-	margin:0px;
-}
-
-.downloadsContainer img {
-	float:left;
-	clear:all;
-	padding:0px;
-	margin:3px;
-	margin-right:8px;
-}
-
-.downloadsInfo {
-	padding-top:3px;
-	margin-left:80px;
-}
-
-.downloadsInfo img {
-	float:none;
-	clear;all;
-	padding:0px;
-	margin:0px;
-}
-
-.downloadsInfo b{
-	color:#333366;
-}
-
-.packages img {
-	margin-right:5px;
-}
-
-.packages tr td{
-	padding:7px 0;
-}
-.packageDesc b{
-	color:#333366;
-	font-size:150%;
-}
-
-
-.packageDesc span{
-	font-size:85%;
-	padding:0 0 10px 0;
-	margin:0px;
-}
-
-.sectionTitle {
-	font-size:120%;
-	line-height:140%;
-	font-weight:bold;
-	width:100%;
-	border-bottom:2px solid #49457C;
-}
-
-.smallFont {
-	font-size:75%;
-}
-
-.platforms a img {
-	position:relative;
-	top:3px;
-	margin:0px;
-	padding:0px;
-	font-size: 200%
-}
-#midcolumn {
-	width: 70%;
-}
-#rightcolumn {
-	width: 25%;
-}
-</style>
-<div id="maincontent">
-<div id="midcolumn">
-<h1>Eclipse Projects Gateway</h1>
-
-<table width="100%" class="packages" cellspacing=0 cellpadding=0>
-			<tr><td width="60" valign="top">
-				<a href="/projects/whatsnew.php"><img src="http://dev.eclipse.org/custom_icons/whats-new64x64.jpg" align="left"></a>
-
-				</td><td valign="top" class="packageDesc">
-				<b><a href="/projects/whatsnew.php">What's New?</a></b><br />
-				<span>Find out what's new in the Eclipse Projects: upcoming project reviews, new project proposals, changes to the development process, etc.<br/></span>
-			</td></tr>
-			<tr><td width="60" valign="top">
-				<a href="/projects/listofprojects.php"><img src="<?= $iconDir ?>/emblems/emblem-system.png" align="left"></a>
-				</td><td  valign="top" class="packageDesc">
-				<b><a href="/projects/listofprojects.php">Show me all the projects</a></b><br />
-				<span>See a list of all the projects and sub-projects hosted at Eclipse. Click through the list to discover the projects' status, activity, contributors, plans, downloads, and more.<br/></span>
-
-			</td></tr>
-			<tr><td width="60" valign="top">
-
-				<a href="/downloads"><img src="<?= $iconDir ?>/actions/go-bottom.png" align="left"></a>
-				</td><td  valign="top" class="packageDesc">
-				<b><a href="/downloads">Take me to the downloads</a></b><br />
-				<span>If you're just looking to download one or more of the Eclipse Projects, you can either navigate to the project through the list of projects (above) or the list of downloads (here).<br/></span>
-			</td></tr>
-			<tr><td width="60" valign="top">
-				<a href="/projects/searchpage.php"><img src="<?= $iconDir ?>/actions/system-search.png" align="left"></a>
-				</td><td  valign="top" class="packageDesc">
-				<b><a href="/projects/searchpage.php">Search the projects</a></b><br />
-
-				<span>Look for a project that implements a specific technology. Look for a certain API. Or just look around...<br/></span>
-			</td></tr>
-			<tr><td width="60" valign="top">
-				<a href="/projects/dev_process/index-quick.php"><img src="http://dev.eclipse.org/custom_icons/cartoon-person64x64.png" align="left"></a>
-				</td><td  valign="top" class="packageDesc">
-				<b><a href="/projects/dev_process/index-quick.php">Help me lead my project</a></b><br />
-				<span>Easy to follow instructions for the official Eclipse processes and rules. Includes everything you need to know about the Eclipse IP Policy. Useful for committers, contributors, and project leaders.<br/></span>
-			</td></tr>
-			<tr><td width="60" valign="top">
-
-				<a href="committers-emeritus.php"><img src="images/emeritus.gif" align="left"></a>
-				</td><td  valign="top" class="packageDesc">
-				<b><a href="committers-emeritus.php">Committers Emeritus</a></b><br />
-				<span>Former Committers who have made significant contributions to the long term success of Eclipse are
-				listed as <a href="committers-emeritus.php">Committers Emeritus</a>. 
-				All former Committers are listed on a similar page as <a href="committers-alumni.php">Committer Alumni</a>.</span>
-			</td></tr>
-		</table>
-
-<center>
-<p><a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&version=unspecified&component=Website&priority=P3&bug_severity=normal&bug_status=NEW&bug_file_loc=http%3A%2F%2F&short_desc=&comment=&commentprivacy=0&keywords=&dependson=&blocked=&maketemplate=Remember%20values%20as%20bookmarkable%20template&form_name=enter_bug&assigned_to=phoenix.ui-inbox%40eclipse.org&qa_contact=">Report errors in, or request improvements to, this page</a></p>
-</center>
-</div><!-- midcolumn -->
-
-<div id="rightcolumn">
-<div class="sideitem" style="border: 0">
-<center>
-</center>
-</div>
-
-<div class="sideitem">
-<h6>Eclipse Projects</h6>
-<div style="margin: 3px">
-Eclipse is a collection of open source projects
-built on the Equinox OSGi run-time. <p>Eclipse started
-as a Java IDE, but has since grown to be much, much
-more. Eclipse projects now cover static and dynamic
-languages; thick-client, thin-client, and server-side
-frameworks; modeling and business reporting; embedded and
-mobile; and, yes, we still have the best Java IDE.<p>
-This page is designed to be a gateway into the
-projects for users, adopters, team members, and the
-merely curious.
-</div>
-</div><!-- sideitem -->
-</div><!-- rightcolumn -->
-
-</div><!-- maincontent -->
-<?php
-	# Paste your HTML content between the EOHTML markers!
-	$html = ob_get_contents();
-	ob_end_clean();
-
-	# Generate the web page
-	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-
-?>
\ No newline at end of file
diff --git a/ip_log.php b/ip_log.php
index b4af69f..34ce384 100644
--- a/ip_log.php
+++ b/ip_log.php
@@ -1,7 +1,7 @@
 <?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'
 /* 221934 - this page to remain on eclipse.org */
 header("Cache-control: no-cache");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/common/shared_functions.php");
+require_once("common/shared_functions.php");
 $theme          = '';
 $pageTitle 		= "IP Log for ";
 $pageKeywords   = '';
diff --git a/ip_log_selector.php b/ip_log_selector.php
index c441562..1daa415 100644
--- a/ip_log_selector.php
+++ b/ip_log_selector.php
@@ -1,12 +1,9 @@
-<?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'
+<?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'
 /* 221934 - this page to remain on eclipse.org */
-require_once("/home/data/httpd/eclipse-php-classes/system/dbconnection_foundation_ro.class.php");
 require_once("common/shared_functions.php");
 
-$_dbc = new DBConnectionFoundation();
-$_dbh = $_dbc->connect();
 $query = "SELECT * FROM Projects WHERE IsComponent = 0 ORDER BY ProjectID";
-$result = mysql_query($query,$_dbh);
+$result = $App->foundation_sql($query);
 $rows = array();
 while( $row = mysql_fetch_assoc($result) ) {
 	$rows[] = $row;
diff --git a/listofprojects.php b/listofprojects.php
index 10e4753..258c33d 100644
--- a/listofprojects.php
+++ b/listofprojects.php
@@ -31,13 +31,18 @@
     border:1px solid #000;
     background-color:#eee; color:#000;
     text-align: center}
+
+th {
+	padding-left: 4px;
+	padding-right: 4px;
+}
 </style>
 <div id="maincontent">
 <div id="midcolumn">
 
 <?php /* ------------------ P R O J E C T S -------------------- */ ?>
 <div class="homeitem3col">
-<h3><a name="Projects"></a>Eclipse Projects</h3>
+<h2><a name="Projects"></a>Eclipse Projects</h2>
 <div style="margin: 5px 15px 15px 0; ">
 
 <table>
diff --git a/lists.php b/lists.php
index 9768956..f83f4b5 100644
--- a/lists.php
+++ b/lists.php
@@ -16,7 +16,6 @@
 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");
-require_once("/home/data/httpd/eclipse-php-classes/system/dbconnection_foundation_ro.class.php");
 require_once("common/shared_functions.php");
 
 $App 	= new App();
@@ -35,18 +34,13 @@
 
 $iconDir		= "http://dev.eclipse.org/large_icons";
 
-get_foundation_connection();
-
 ob_start();
+include( '_commonLeftNav.php' );
 ?>
 <div id="maincontent">
 <div id="midcolumn">
 <?php
 
-if(!$fdbh) {
-	nice_die("Can't open DB connection");
-}
-
 $list = $_REQUEST['list'];
 $param = $_REQUEST['param'];
 $param2 = $_REQUEST['param2'];
@@ -102,12 +96,11 @@
 } elseif($list == 'allcommitters') {
 	echo "<h1>All Committers with Project</h1>";
 	echo "<table>";
-	$result = mysql_query("SELECT People.PersonID, FName, LName, ProjectID FROM People, PeopleProjects " .
+	$result = $App->foundation_sql("SELECT People.PersonID, FName, LName, ProjectID FROM People, PeopleProjects " .
 			"WHERE Relation = 'CM' " .
 			"AND InactiveDate is NULL " .
 			"AND People.PersonID = PeopleProjects.PersonID " .
 			"ORDER BY LName", $fdbh);
-	mysql_error_check();
 	while($row = mysql_fetch_assoc($result)) {
 		echo "<tr><td></a> </td><td> <a href='?list=projectsforcommitter&param=" . $row['PersonID'] ."'>" . $row['FName'] .  " " . $row['LName'] . "</a> </td><td> <a href=\"?list=byproject&param=" . $row['ProjectID'] . "\">"  . $row['ProjectID'] . "</a></td></tr>";
 	}
@@ -116,14 +109,13 @@
 } elseif($list == 'allbyproject') {
 	echo "<h1>All Committers by Project</h1>";
 	echo "<table>";
-	$result = mysql_query("SELECT People.PersonID, FName, LName, Projects.ProjectID FROM People, PeopleProjects, Projects " .
+	$result = $App->foundation_sql("SELECT People.PersonID, FName, LName, Projects.ProjectID FROM People, PeopleProjects, Projects " .
 			"WHERE Relation = 'CM' " .
 			"AND InactiveDate is NULL " .
 			"AND People.PersonID = PeopleProjects.PersonID " .
 			"AND Projects.ProjectID = PeopleProjects.ProjectID " .
 			"AND IsComponent != 1 " .
 			"ORDER BY ProjectID", $fdbh);
-	mysql_error_check();
 	while($row = mysql_fetch_assoc($result)) {
 		echo "<tr><td><a href=\"?list=byproject&param=" . $row['ProjectID'] . "\">"  . $row['ProjectID'] . "</a> </td><td> <a href='?list=projectsforcommitter&param=" . $row['PersonID'] ."'>" . $row['FName'] .  " " . $row['LName'] . "</a></td></tr>";
 	}
@@ -131,18 +123,16 @@
 
 } elseif($list == 'projectsforcommitter') {
 	// Get full name from People table
-	$result = mysql_query("SELECT FName, LName FROM People WHERE PersonID = '$param'");
-	mysql_error_check();
+	$result = $App->foundation_sql("SELECT FName, LName FROM People WHERE PersonID = '$param'");
 	$row = mysql_fetch_assoc($result);
 	$name = $row['FName'] . ' ' . $row['LName'];
 
 	// Get employer name if we know it
-	$result = mysql_query("SELECT Name1 FROM Organizations, OrganizationContacts " .
+	$result = $App->foundation_sql("SELECT Name1 FROM Organizations, OrganizationContacts " .
 			"WHERE PersonID = '$param' " .
 			"AND Relation = 'EMPLY' " .
 			"AND OrganizationContacts.Comments = 'PRIMARY'" .
 			"AND Organizations.OrganizationID = OrganizationContacts.OrganizationID");
-	mysql_error_check();
 	$row = mysql_fetch_assoc($result);
 	$company = $row['Name1'];
 
@@ -154,7 +144,7 @@
 	box_header('whiteonblue', 'Committer on', "$iconDir/apps/system-users.png");
 	
 	echo "<table>";
-	$result = mysql_query("SELECT People.PersonID, FName, LName, Projects.ProjectID " .
+	$result = $App->foundation_sql("SELECT People.PersonID, FName, LName, Projects.ProjectID " .
 		"FROM People, PeopleProjects, Projects " .
 			"WHERE Relation = 'CM' " .
 			"AND InactiveDate is NULL " .
@@ -163,7 +153,6 @@
 			"AND People.PersonID = '$param' " .
 			"AND IsComponent != 1 " .
 			"ORDER BY ProjectID", $fdbh);
-	mysql_error_check();
 	if(mysql_num_rows($result) < 1) {
 		die("That is not a committer");
 	}
@@ -208,14 +197,13 @@
 	echo "</h1>";
 	echo "<b style='color: gray; padding-left: 1em;'>component: $name </b><br/><br/>\n";
 	echo "<table>\n";
-	$result = mysql_query("SELECT FName, LName, People.PersonID
+	$result = $App->foundation_sql("SELECT FName, LName, People.PersonID
 			FROM PeopleProjects, People, Projects
 			WHERE ParentProjectID = '$param'
 				AND Projects.ProjectID = '$param2'
 				AND People.PersonID = PeopleProjects.PersonID
 				AND Projects.ProjectID = PeopleProjects.ProjectID
 			ORDER BY LName", $fdbh);
-	mysql_error_check();
 	if(mysql_num_rows($result) < 1) {
 		die("That is not a project/component or there are no committers on the project/component");
 	}
@@ -227,10 +215,12 @@
 }
 
 echo "<br/><hr/>
+<div style='font-size: 70%'>
 <b>How to read this:</b> Project and Committer names link to detail pages for their respective subject.  (dash) links connect to
 the commits explorer dashboard at <a href='http://dash.eclipse.org/'>dash.eclipse.org</a>.  On detail
 pages components are in comma-separated, gray lists after the name of each committer if the
 particular project is organizedby component.
+</div>
 </div></div>";
 
 $html = ob_get_contents();
diff --git a/previous-release-reviews.php b/previous-release-reviews.php
index 57c61e4..cafa995 100644
--- a/previous-release-reviews.php
+++ b/previous-release-reviews.php
@@ -1,6 +1,8 @@
 <?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'
 /* 221934 - this page to remain on eclipse.org */
 
+ini_set('memory_limit', '16M');
+
 $pageTitle 		= "Past Reviews";
 
 include( '_commonLeftNav.php' );
@@ -10,9 +12,9 @@
     <div id="maincontent">
 	<div id="midcolumn">
 <h1>Past Reviews</h1>
-The life-cycle of an Eclipse Project goes through a <a href="dev_process/development_process.php#6_2_Project_Lifecycle">number of phases</a>.
+<p>The life-cycle of an Eclipse Project goes through a <a href="dev_process/development_process.php#6_2_Project_Lifecycle">number of phases</a>.
 At the end of each phase, the community meets to review the project.
-The following is an archive of past Reviews:
+The following is an archive of past Reviews:</p>
 
 <ul class="midlist">
 <?php
diff --git a/project-plan.php b/project-plan.php
index 87300e4..d4ce1d7 100644
--- a/project-plan.php
+++ b/project-plan.php
@@ -6,8 +6,6 @@
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/projects/projectInfoData.class.php");
-require_once("/home/data/httpd/eclipse-php-classes/system/dbconnection_foundation_ro.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/smartconnection.class.php");
 
 // ----------------------------------------------------------------------------
 // PHOENIX STUFF
@@ -19,6 +17,7 @@
 
 $pageTitle 		= "Project Plan - ";
 $pageAuthor		= "Bjorn Freeman-Benson";
+include( '_commonLeftNav.php' );
 
 $Nav->setLinkList(array()); // empty Nav
 
@@ -242,9 +241,7 @@
 function show_error_page( $errormsg, $projectid ) {
 	$leaders = array();
 
-	$dbc = new DBConnectionFoundation();
-	$dbh = $dbc->connect();
-	$result = mysql_query("
+	$result = $App->portal_sql("
 		SELECT DISTINCT(People.PersonID), FName, LName
 			FROM PeopleProjects, Projects, People
 			WHERE PeopleProjects.Relation in ('PL','PD')
@@ -252,7 +249,7 @@
 				AND People.PersonID = PeopleProjects.PersonID
 				AND Projects.ProjectID = PeopleProjects.ProjectID
 				AND Projects.ProjectID = '$projectid'
-			ORDER BY LName", $dbh);
+			ORDER BY LName");
 	while( $row = mysql_fetch_assoc($result) ) {
 		$leaders[] = $row['FName'] . ' ' . $row['LName'];
 	}
diff --git a/project_provisioning_request.php b/project_provisioning_request.php
index b119e5e..42058e1 100644
--- a/project_provisioning_request.php
+++ b/project_provisioning_request.php
@@ -4,6 +4,7 @@
 $pageTitle 		= "New Project Provisioning Request";
 $pageKeywords	= "";
 $pageAuthor		= "";
+include( '_commonLeftNav.php' );
 
 ob_start();
 ?>
diff --git a/project_summary.php b/project_summary.php
index 8a75bcd..378c11a 100644
--- a/project_summary.php
+++ b/project_summary.php
@@ -153,7 +153,7 @@
 <script src="/eclipse.org-common/yui/2.6.0/build/dom/dom-min.js"></script>
 
 <div id="maincontent">
-<div id="midcolumn" style="width: 95%;">
+<div id="midcolumn" style="width: 95%; margin-left: 1.5em;">
 		<!-- MESSAGE -->
 		<div style="text-align: center; width: 100%;">
 			<a href="#" onclick="simpledialog.render(document.body);simpledialog.show();return false;">Click here if the information on this page is ugly, incorrect, or just plain bogus.</a>
@@ -509,7 +509,6 @@
 </div>
 <?php box_footer('blueonwhite'); ?>
 
-	<div class="credits">icons supplied by <a href="http://tango.freedesktop.org/Tango_Icon_Library">The Tango Project</a></div>
 </div> <!-- midcolumn -->
 
 <!-- Popup Box -->
diff --git a/projects-tmp.txt b/projects-tmp.txt
deleted file mode 100755
index c9f96c3..0000000
--- a/projects-tmp.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-Project Name: Cloudfree
-Project URL:  /cloudfree/
-Project ID: 
-Review Name: Name and Scope Change
-Status; Legal Review Requested:  
-Status; Review Scheduled: Wed, 11 Mar 2009 10:52:00 PDT
-Review Date: Wed, 18 Mar 2009
-Review Time: 1500
-Status; Slides Posted: Wed, 11 Mar 2009 20:18:00 PDT 
-Slides URL: /project-slides/CloudFree_Name_Scope_Change.pdf 
-Bug Number: 
-Status; IP Log Posted: 
-IP Log URL: 
-Status; Review Successful: 
-Review Attendees: 
-Status; Review Pending: 
-Status; Review Unsuccessful: 
-Status; Review Withdrawn: 
-
-Project Name: Swordfish
-Project URL:  /swordfish/
-Project ID: 
-Review Name: 0.8
-Status; Legal Review Requested:  
-Status; Review Scheduled: Wed, 11 Mar 2009 11:08:00 PDT
-Review Date: Wed, 18 Mar 2009
-Review Time: 1500
-Status; Slides Posted: Wed, 11 Mar 2009 16:09:00 PDT
-Slides URL: /project-slides/Swordfish08ReleaseReview.pdf
-Bug Number: 
-Status; IP Log Posted: Wed, 11 Mar 2009 16:09:00 PDT
-IP Log URL: /project-slides/Swordfish 0.8 IP log.csv
-Status; Review Successful: 
-Review Attendees: 
-Status; Review Pending: 
-Status; Review Unsuccessful: 
-Status; Review Withdrawn: 
-
-Project Name: Equinox Logging Bundle
-Project URL:  /equinox/incubator/
-Project ID: 
-Review Name: Graduation
-Status; Legal Review Requested:  
-Status; Review Scheduled: Wed, 11 Mar 2009 13:24:00 PDT 
-Review Date: Wed, 18 Mar 2009 
-Review Time: 1500 
-Status; Slides Posted: Wed, 11 Mar 2009 20:30:00 PDT 
-Slides URL: /project-slides/Equinox_log_bundle graduation review.pdf 
-Bug Number: 
-Status; IP Log Posted: Wed, 11 Mar 2009 20:30:00 PDT 
-IP Log URL: /project-slides/EquinoxLoggingIPlog.html 
-Status; Review Successful: 
-Review Attendees: 
-Status; Review Pending: 
-Status; Review Unsuccessful:  
-Status; Review Withdrawn: 
diff --git a/quarterly-project-changes-report.php b/quarterly-project-changes-report.php
index 4d48034..2763624 100644
--- a/quarterly-project-changes-report.php
+++ b/quarterly-project-changes-report.php
@@ -5,6 +5,7 @@
 $pageKeywords	= "projects";
 $pageAuthor		= "Bjorn Freeman-Benson Dec 06/05";
 
+ini_set('memory_limit', '12M');
 
 ob_start();
 ?>
@@ -15,7 +16,7 @@
         <p>These are the changes in the Eclipse projects over the last 100 days (a little more than one quarter).</p>
         
 <?php
-include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/project-review-data");
+include_once("fragments/project-review-data.php");
 $all = new AllInfo();
 $all->load();
 $reviews = array();
@@ -107,9 +108,9 @@
 function cmp_q_reviews($a, $b) {
   	if( $a == $b ) return 0;
   	$am = $a->lastdate();
-  	$aa = numerical_date( $am );
+  	$aa = strtotime( $am );
   	$bm = $b->lastdate();
-  	$bb = numerical_date( $bm );
+  	$bb = strtotime( $bm );
   	if( $aa == $bb ) return 0;
   	if( $aa < $bb ) return -1;
   	return 1;
diff --git a/whatsnew.php b/whatsnew.php
index 2e872c7..457f226 100644
--- a/whatsnew.php
+++ b/whatsnew.php
@@ -1,6 +1,8 @@
 <?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'
 /* 221934 - this page to remain on eclipse.org */
 
+ini_set('memory_limit', '12M');
+
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/projects/projectInfoData.class.php"); // use the project info system
 
 $pageTitle 		= "What's New with Eclipse Projects";
