diff --git a/_projectCommon.php b/_projectCommon.php
deleted file mode 100755
index c31ff07..0000000
--- a/_projectCommon.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*******************************************************************************
- * Copyright (c) 2009 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
- *
- * Contributors:
- *    
- *******************************************************************************/
-
-	# Set the theme for your project's web pages.
-	# See http://eclipse.org/phoenix/
-	$theme = "Nova";
-	
-
-	# Define your project-wide Navigation here
-	# This appears on the left of the page if you define a left nav
-	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
-	# these are optional
-	
-	# If you want to override the eclipse.org navigation, uncomment below.
-	# $Nav->setLinkList(array());
-	
-	# Break the navigation into sections
-	$Nav->addNavSeparator("Tycho", 	"/tycho");
-	$Nav->addCustomNav("Download", "/tycho/download.php", "_self", 3);
-	$Nav->addCustomNav("Documentation", "/tycho/documentation.php", "_blank", 3);
-	$Nav->addCustomNav("Support", "/tycho/support.php", "_blank", 3);
-	$Nav->addCustomNav("Getting Involved", "/tycho/getting_involved.php", "_blank", 3);
-
-	# Define keywords, author and title here, or in each PHP page specifically
-	$pageKeywords	= "maven, tycho, pde, build";
-	$pageAuthor		= "Jan Sievers";
-	# $pageTitle 		= "Xtext";
-
-
-	# top navigation bar
-	# To override and replace the navigation with your own, uncomment the line below.
-	# $Menu->setMenuItemList(array());
-	# $Menu->addMenuItem("Home", "/project", "_self");
-	# $Menu->addMenuItem("Download", "/project/download.php", "_self");
-	# $Menu->addMenuItem("Documentation", "/project/documentation.php", "_self");
-	# $Menu->addMenuItem("Support", "/project/support.php", "_self");
-	# $Menu->addMenuItem("Developers", "/project/developers", "_self");
-	
-	# To define additional CSS or other pre-body headers
-	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/tycho/style.css"/>');
-	
-	# To enable occasional Eclipse Foundation Promotion banners on your pages (EclipseCon, etc)
-	$App->Promotion = TRUE;
-	
-	# If you have Google Analytics code, use it here
-	# $App->SetGoogleAnalyticsTrackingCode("YOUR_CODE");
-?>
\ No newline at end of file
diff --git a/about.php b/about.php
deleted file mode 100644
index e18626c..0000000
--- a/about.php
+++ /dev/null
@@ -1,23 +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'
-/*******************************************************************************
- * Copyright (c) 2009 
- * 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
- *
- * Contributors:
- *    
- *******************************************************************************/
-
-	$pageTitle 		= "Tycho - Project Leads";
-
-	$html  = <<<EOHTML
-<div id="midcolumn">
-<h2>$pageTitle</h2>
-<p>The Tycho project is lead by <a href="/projects/lists.php?list=projectsforcommitter&param=ifedorenk">Igor Fedorenko</a> and <a href="/projects/lists.php?list=projectsforcommitter&param=jvanzyl">Jason van Zyl</a></p>
-</div>
-EOHTML;
-	# Generate the web page
-	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
\ No newline at end of file
diff --git a/documentation.php b/documentation.php
deleted file mode 100644
index d77f4f6..0000000
--- a/documentation.php
+++ /dev/null
@@ -1,45 +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'
-/*******************************************************************************
- * Copyright (c) 2009
- * 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
- *
- * Contributors:
- *
- *******************************************************************************/
-
-	$pageTitle 		= "Tycho - Documentation";
-
-	$html  = <<<EOHTML
-<div id="midcolumn">
-<h2>$pageTitle</h2>
-<p>The documentation of the Tycho project is maintained in the <a href="https://wiki.eclipse.org/Category:Tycho">Eclipse wiki</a>.</p>
-
-<p>
-For an introduction to Tycho, we recommend following the <a href="https://www.eclipsecon.org/2013/node/1277.html">EclipseCon Tycho Tutorial</a>.
-</p>
-
-<p>In order to set up Tycho in a Maven build, follow the instructions and examples on the pages
-<a href="https://wiki.eclipse.org/Tycho/Reference_Card">Tycho Reference Card</a> and <a href="https://wiki.eclipse.org/Tycho/Packaging_Types">Tycho Packaging Types</a>.
-</p>
-
-<p>For detailed reference documentation, refer to the <a href="sitedocs/index.html">Maven plugin documentation for Tycho</a>.
-</p>
-
-<p>Other sources of information:
-<ul>
-  <li><a href="https://wiki.eclipse.org/Tycho/Demo_Projects">Tycho demo projects</a></li>
-  <li><a href="http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-its/">Tycho integration tests contain many examples you can use as templates</a></li>
-  <li><a href="http://dev.eclipse.org/mhonarc/lists/tycho-user/">Search the tycho-user mailing list archive</a></li>
-  <li><a href="http://dev.eclipse.org/mhonarc/lists/tycho-dev/">Search the tycho-dev mailing list archive</a></li>
-  <li><a href="https://dev.eclipse.org/mailman/listinfo/tycho-user">Ask on the tycho-user@eclipse.org mailing list</a></li>
-</ul>
-</p>
-
-</div>
-EOHTML;
-	# Generate the web page
-	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
diff --git a/download.php b/download.php
deleted file mode 100644
index c5fd554..0000000
--- a/download.php
+++ /dev/null
@@ -1,35 +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'
-/*******************************************************************************
- * Copyright (c) 2009, 2011
- * 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
- *
- * Contributors:
- *    - SAP AG: Rewritten; describe how to obtain snapshots
- *******************************************************************************/
-
-	$pageTitle 		= "Tycho - Download";
-
-	$html  = <<<EOHTML
-<div id="midcolumn">
-<h2>$pageTitle</h2>
-<p>Tycho is a Maven 3 plugin and as such does not require explicit download. 
-Just <a href="https://wiki.eclipse.org/Tycho/Reference_Card">configure Tycho</a> as build extension in your project's pom.xml,
-and Maven will automatically download the required build plugins from Maven central.</p>
-
-<!-- TODO provide new URL for SNAPSHOT builds --> 
-<!--
-<p>If you want to try out the current developent snapshot of Tycho, you will need to add the plugin repository 
-<a href="http://repository.sonatype.org/content/groups/sonatype-public-grid/">http://repository.sonatype.org/content/groups/sonatype-public-grid/</a> in your POM.
--->
-
-<h3>Prerequisites</h3>
-<p>Tycho requires <a href="http://maven.apache.org/download.html">Maven 3.0</a> or better installed.</p>
-
-</div>
-EOHTML;
-	# Generate the web page
-	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
\ No newline at end of file
diff --git a/getting_involved.php b/getting_involved.php
deleted file mode 100644
index 1605658..0000000
--- a/getting_involved.php
+++ /dev/null
@@ -1,46 +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'
-/*******************************************************************************
- * Copyright (c) 2009 
- * 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
- *
- * Contributors:
- *    
- *******************************************************************************/
-
-	$pageTitle 		= "Tycho - Getting Involved";
-
-	$html  = <<<EOHTML
-<div id="midcolumn">
-<h3>$pageTitle</h3>
-<p>
-<ul>
-<li>Project sources are at git.eclipse.org: <a href="http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/">tycho</a>, <a href="http://git.eclipse.org/c/tycho/org.eclipse.tycho.extras.git/">tycho.extras</a> and mirrored at github: <a href="http://github.com/eclipse/tycho/">tycho</a>, <a href="http://github.com/eclipse/tycho.extras/">tycho.extras</a>.
-<li><a href="https://wiki.eclipse.org/Developing_Tycho">Building tycho from sources</a></li>
-<li><a href="https://wiki.eclipse.org/Tycho/Contributor_Guide">Contributor guide</a></li>
-<li><a href="https://dev.eclipse.org/mailman/listinfo/tycho-dev">tycho-dev@eclipse.org mailing list</a></li>
-<li><a href="https://wiki.eclipse.org/Category:Tycho">Tycho Wiki</a></li>
-</ul>
-</p>
-
-<h3>Committers</h3>
-<p>
-<ul>
-  <li>Igor Fedorenko, Takari (project lead)</li>
-  <li>Jason Van Zyl, Takari (project lead)</li>
-  <li>Jan Sievers, SAP (project lead)</li>
-  <li>Tobias Oberlies, SAP</li>
-  <li>Martin Schreiber, Bachmann electronic GmbH</li>
-  <li>Alexander Kurtakov, Redhat</li>
-  <li>Mickael Istria, Redhat</li>
-</ul>
-</p>
-</div>
-
-
-EOHTML;
-	# Generate the web page
-	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
\ No newline at end of file
diff --git a/images/backgroundMain.png b/images/backgroundMain.png
deleted file mode 100644
index 6a8578c..0000000
--- a/images/backgroundMain.png
+++ /dev/null
Binary files differ
diff --git a/images/backgroundMainEmpty.png b/images/backgroundMainEmpty.png
deleted file mode 100644
index 9487b21..0000000
--- a/images/backgroundMainEmpty.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonDocumentation.png b/images/buttonDocumentation.png
deleted file mode 100644
index bbfdde0..0000000
--- a/images/buttonDocumentation.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonDocumentation_sel.png b/images/buttonDocumentation_sel.png
deleted file mode 100644
index 8affb93..0000000
--- a/images/buttonDocumentation_sel.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonDownload.png b/images/buttonDownload.png
deleted file mode 100644
index e620092..0000000
--- a/images/buttonDownload.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonDownload_new.png b/images/buttonDownload_new.png
deleted file mode 100644
index e620092..0000000
--- a/images/buttonDownload_new.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonDownload_sel.png b/images/buttonDownload_sel.png
deleted file mode 100644
index d3a0330..0000000
--- a/images/buttonDownload_sel.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonInvolved.png b/images/buttonInvolved.png
deleted file mode 100644
index b3e9a82..0000000
--- a/images/buttonInvolved.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonInvolved_sel.png b/images/buttonInvolved_sel.png
deleted file mode 100644
index 346a452..0000000
--- a/images/buttonInvolved_sel.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonSupport.png b/images/buttonSupport.png
deleted file mode 100644
index bd36086..0000000
--- a/images/buttonSupport.png
+++ /dev/null
Binary files differ
diff --git a/images/buttonSupport_sel.png b/images/buttonSupport_sel.png
deleted file mode 100644
index a535fe8..0000000
--- a/images/buttonSupport_sel.png
+++ /dev/null
Binary files differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..fc5d43a
--- /dev/null
+++ b/index.html
@@ -0,0 +1,10 @@
+<html>
+<head>
+<title>Redirect to Eclipse PMI</title>
+<meta http-equiv="refresh" content="0; URL=https://projects.eclipse.org/projects/technology.tycho">
+</head>
+
+<body>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/index.php b/index.php
deleted file mode 100755
index 16ca4c5..0000000
--- a/index.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-/*******************************************************************************
- * Copyright (c) 2009 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
- *
- * Contributors:
- *    
- *******************************************************************************/
-
-	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());
-	
-	$localVersion = false;
-	
-	# Define these here, or in _projectCommon.php for site-wide values
-	$pageKeywords	= "eclipse, project, tycho";
-	$pageAuthor		= "Jan Sievers";
-	$pageTitle 		= "Tycho home";
-	
-	
-	// 	# Paste your HTML content between the EOHTML markers!
-	$html = file_get_contents('pages/_index.html');
-
-	# Generate the web page
-	$App->generatePage($theme, $Menu, null, $pageAuthor, $pageKeywords, $pageTitle, $html);
-
-?>
\ No newline at end of file
diff --git a/pages/_index.html b/pages/_index.html
deleted file mode 100644
index 3a581ca..0000000
--- a/pages/_index.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<div id="bigbuttons">
-<h3>Primary Links</h3>
-<ul>
-	<li><a id="buttonDownload" href="download.php" title="Download">Eclipse
-	Distribution, Update Site, Dropins</a></li>
-	<li><a id="buttonDocumentation" href="documentation.php"
-		title="Documentation">Tutorials, Examples, Videos, Reference Documentation</a></li>
-	<li><a id="buttonSupport" href="support.php" title="Support">Bug
-	Tracker, Newsgroup, Support</a></li>
-	<li><a id="buttonInvolved" href="getting_involved.php" title="Getting Involved">Workspace Setup, Wiki, Committers</a></li>
-</ul>
-</div>
-
-<div id="midcolumn">
-<h3>Tycho - Building Eclipse plug-ins with maven</h3>
-<div id="introText">
-
-<p class="left">Tycho is focused on a Maven-centric, manifest-first approach to
-building Eclipse plug-ins, features, update sites, RCP applications and OSGi bundles.
-Tycho is a set of Maven plugins and extensions for building Eclipse plugins and OSGi bundles with Maven. Eclipse plugins and OSGi bundles have their own metadata for expressing dependencies, source folder locations, etc. that are normally found in a Maven POM. Tycho uses native metadata for Eclipse plugins and OSGi bundles and uses the POM to configure and drive the build. Tycho supports bundles, fragments, features, update site projects and RCP applications. Tycho also knows how to run JUnit test plugins using OSGi runtime and there is also support for sharing build results using Maven artifact repositories.
-
-Tycho plugins introduce new packaging types and the corresponding lifecycle bindings
-that allow Maven to use OSGi and Eclipse metadata during a Maven build.
-</p>
-<p class="right">
-OSGi rules are used to resolve project dependencies and package visibility restrictions
-are honoured by the OSGi-aware JDT-based compiler plugin.
-Tycho will use OSGi metadata and OSGi rules to calculate project dependencies
-dynamically and injects them into the Maven project model at build time.
-Tycho supports all attributes supported by the Eclipse OSGi resolver
-(Require-Bundle, Import-Package, Eclipse-GenericRequire, etc).
-Tycho will use proper classpath access rules during compilation.
-Tycho supports all project types supported by PDE and will use PDE/JDT project metadata where possible.
-One important design goal in Tycho is to make sure there is no duplication of metadata between POM
-and OSGi metadata.
-</p>
-</div>
-
-
-<!--
-<div id="screencast">
-<object width="640" height="480"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8260921&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=DBD7EF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8260921&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=DBD7EF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="480"></embed></object>
-</div>
--->
-
-<!--
-<h3>...and yet powerful</h3>
- -->
-
- <!--
-<div id="feature_1">
-
-<h4>Some cool feature</h4>
-<p>MyProject has this really cool feature that you describe here in few words, just as a teaser.</p>
-</div>
-
-<div id="feature_2">
-<h4>Another Feature</h4>
-<p>When working with MyProject, great things happen, and one of them is described here.</p>
-</div>
-
-<div id="feature_3">
-<h4>Another Feature</h4>
-<p>When working with MyProject, great things happen, and one of them is described here.</p>
-</div>
-
-<div id="feature_4">
-<h4>User Experience</h4>
-<p>
-Experiment with style.css to create columns for text, just the way you want it. This section
-is a bit wider and can contain more words, even small logos or graphics to describe a neat feature in more detail.</p>
-</div>
-
-<div id="feature_more">
-<h4>and much more...</h4>
-<p>Read the Tycho <a href="/project/documentation.php">documentation</a> and join the discussion at the <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=183&S=2866b073f66c1ea0407ee1b4a2555bf3">forum</a> to understand how powerful MyProject is.</p>
-<p> Want to know more? <a href="/projects/project_summary.php?projectid=technology.tycho">About This Project</a>
-</div>
--->
-</div>
-
-<div id="rightcolumn">
-
-<div>
-<h3>Contributors</h3>
-<p>
-<ul>
-<li><a href="http://www.redhat.com">Red Hat</a></li>
-<li><a href="http://www.sap.com">SAP</a></li>
-<li><a href="http://www.sonatype.com">Sonatype</a></li>
-</ul>
-</p>
-</div>
-
-
-
-<div id="headlines">
-<h3>New and Noteworthy</h3>
-<p>
-Tycho 2.0 was released. See the <a href="https://wiki.eclipse.org/Tycho/Release_Notes/2.0">release notes</a> for details.
-</p>
-</div>
-
-</div>
diff --git a/project-info/executive-summary.html b/project-info/executive-summary.html
deleted file mode 100755
index e69de29..0000000
--- a/project-info/executive-summary.html
+++ /dev/null
diff --git a/project-info/home-page-one-liner.html b/project-info/home-page-one-liner.html
deleted file mode 100755
index 999ee5e..0000000
--- a/project-info/home-page-one-liner.html
+++ /dev/null
@@ -1 +0,0 @@
-Tycho
\ No newline at end of file
diff --git a/project-info/maillist b/project-info/maillist
deleted file mode 100755
index 1e237de..0000000
--- a/project-info/maillist
+++ /dev/null
@@ -1,2 +0,0 @@
-::tycho-dev::Developer Mailing list for the Tycho Project.
-::tycho-user::User Mailing list for the Tycho Project.
\ No newline at end of file
diff --git a/project-info/newsgroup b/project-info/newsgroup
deleted file mode 100755
index e49fd02..0000000
--- a/project-info/newsgroup
+++ /dev/null
@@ -1 +0,0 @@
-::eclipse.tycho::Eclipse Tycho
\ No newline at end of file
diff --git a/project-info/project-info.xml b/project-info/project-info.xml
deleted file mode 100755
index ac4b49d..0000000
--- a/project-info/project-info.xml
+++ /dev/null
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project>
-  <!--
-     - This example is annotated to be instructive. In order to be instructive, the
-     - example is a mish-mash of information from a variety of projects. Obviously, 
-     - when you write the project-info.xml file for your project, the file will 
-     - contain information only about your one project.
-    -->
-  <!--
-     - Unless otherwise specified, all URLs are to be specified using rooted relative
-     - paths. In other words:
-     -    CORRECT: "/webtools/foo/bar.php"
-     -    INCORRECT: "foo/bar.php"
-     -    INCORRECT: "http://www.eclipse.org/webtools/foo/bar.php"
-    -->
-  
-  <!--
-     - Each Eclipse project as an official name, e.g., 
-     - "AJDT - AspectJ Development Tools Project" and a foundation database 
-     - key, e.g., "technology.ajdt". These are stored in an Eclipse Foundation
-     - database; You can override the name stored on the database by filling 
-     - the <name/> tag
-    -->
-  <name>Tycho Project</name>
-    
-  <!--     
-     - Each project can also have a short name to be used in HTML lists and 
-     - other horizontally challenged places.
-    -->
-  <short-name>Tycho</short-name>
-  
-  <!--
-     - Each Eclipse project has one or more Bugzilla products and components.
-     - Some projects also have a separate web page describing how to submit
-     - a bug, how bugs are prioritized, and other useful information.
-     - The <bugzilla> collects this information.
-     - 
-     - <bugzilla url="..."> <product name="..."/> ... </bugzilla>
-     - The url is optional; if absent, the url will default to the Bugzilla
-     - page of the first product. Multiple <product>s are allowed.
-    -->
-  <bugzilla>
-    <product name="Tycho"/>
-  </bugzilla>
-
-  <!--
-     - Committers and non-committer Contributors are the raison d'etre of 
-     - an Eclipse project, thus each project should list and acknowledge these
-     - developers. Some of the Committers are 'special' in the sense that
-     - they are the project leaders.  The <team> element contains the 
-     - URL of the project's pages listing these important people.
-    -->
-  <team url="/tycho/about.php" />
-  
-  <!--
-     - The source code of each Eclipse project is stored in CVS. Eclipse maintains
-     - a number of CVS repositories, thus the <cvs> element specifies which
-     - CVS repository and (if applicable) which root path stores this project's
-     - source code.
-     -
-     - A top-level project typically specifies only the repository:
-     -     <cvs repository="/cvsroot/tptp"/>
-     - A sub-project includes the root path as well:
-     -     <cvs repository="/cvsroot/technology/">
-     -       <module path="org.eclipse.higgins" />
-     -     </cvs>
-    -->
-  <cvs repository="/cvsroot/technology/">
-    <module path="org.eclipse.phoenix" /> 
-  </cvs>
-
-  <!--
-     - The description of an Eclipse project shows up in many places: the
-     - project's home page, perhaps the /projects/ page listing all the
-     - top-level projects, in the Roadmap, and so on. Some of the descriptions
-     - are separate HTML files (such as those described in 
-     - http://phoenix.eclipse.org/projects/dev_process/project-status-infrastructure.php).
-     - It would be nice 
-     - This <description> element contains two additional descriptions.
-     -    1. The optional <description url="..."> points to a web page with a larger
-     -       description of the entire project. 
-     -    2. The required <description paragraph-url="..."> points to a file
-     -       containing a couple of simple HTML paragraphs describing the project. 
-     -       This file is often stored in the /project-info/ directory, thus the
-     -       url would be something like "/tptp/project-info/description.html".
-    -->
-  <description url="/phoenix/about.php"
-     paragraph-url="/phoenix/project-info/project-page-paragraph.html"/>
-  
-  <!--
-     - In addition to the description, each Eclipse project is also required to
-     - provide an up-to-date status summary. "Up to date" means revised at least
-     - quarterly. 
-     - The required <summary paragraph-url="..."> points to a file
-     - containing a number of simple HTML paragraphs with an executive summary
-     - of the project status.
-     - This file is often stored in the /project-info/ directory, thus the
-     - url would be something like "/technology/project-info/executive-summary.html".
-    -->
-  <summary paragraph-url="/technology/phoenix/project-info/executive-summary.html"/>
-
-  <!--
-     - It is important to help new users get started with an Eclipse project
-     - because most Eclipse projects are solving some difficult technical
-     - problem and thus are somewhat complex. The <getting-started> element
-     - points to a web page on the project's site that describes how to
-     - get started using and extending the project's tools and frameworks.
-    -->
-  <getting-started url="/tycho/documentation.php" />
-  
-  <!--
-     - It is also important to help new contributors get started with an Eclipse project.
-     - Most Eclipse projects have interesting/complex development environment
-     - setups or to-do lists. The <contributing> element
-     - points to a web page on the project's site that describes how to
-     - get started developing on, and contributing to, the project.
-    -->
-  <contributing url="/tycho/getting_involved.php" />
-  
-  <!--
-     - Each Eclipse project is required to maintain a current Project IP Log.
-     - See http://www.eclipse.org/projects/dev_process/project-log.php
-     - The <ip-log> contains the URL of that log.  If the project has
-     - other legal information as well, it can use the <legal> element
-     - instead and then include the IP Log information on the Legal web page.
-    -->
-  <ip-log url="" /> 
-  <legal url="" /> 
-
-  <!--
-     - Each Eclipse project has one or more mailing lists.
-     - Some projects also have a separate web page describing these lists
-     - while others rely on the main Eclipse mailing lists page.
-     - 
-     - <mailing-lists url="..."> <list name="..."/> ... </mailing-lists>
-     - The url is optional; if absent, the url will default to the Eclipse
-     - mailing lists page. Multiple <lists>s are allowed.
-     -
-     - Note that currently mailing lists must be redundantly listed in
-     - the separate project-info/maillist file as well.
-    -->
-  <mailing-lists>
-    <list name="tycho-dev"/>
-    <list name="tycho-user"/>
-  </mailing-lists>
-  
-  <!--
-     - Each Eclipse project has one or more newsgroups.
-     - Some projects also have a separate web page describing these lists
-     - while others rely on the main Eclipse newsgroups page.
-     - 
-     - <newsgroups url="..."> <newsgroup name="..."/> ... </newsgroups>
-     - The url is optional; if absent, the url will default to the Eclipse
-     - newsgroups page. Multiple <newsgroups>s are allowed.
-    -->
-  <newsgroups>
-    <newsgroup name="eclipse.tycho" />
-  </newsgroups>
-  
-  <!--
-     - The dashboard attempts to measure the liveness of a project in many
-     - ways including the traffic on the mailing lists and newsgroups. There
-     - are other places where significant project-related traffic can occur
-     - including blogs and articles. When listed here, the dashboard incorporates
-     - them into the liveness measure (or rather, "will incorporate").
-    -->
-  <articles>
-  </articles>
-  
-  <blogs>
-  </blogs>
-  
-  <!--
-     - Each Eclipse project needs to have a plan both for its internal purposes
-     - (to guide development and resource allocation) and for the larger Eclipse
-     - community and ecosystem to understand what will be delivered and when
-     - it will be delivered.
-    -->
-  <project-plan url="" />
-
-  <!--
-     - Each Eclipse project creates (optional) nightly builds and milestone builds,
-     - but the important builds of a project are the releases. This section of the
-     - status file records the completed (past) and scheduled (future) releases of
-     - the project. 
-     - The status, name, and date are required attributes. The download is optional
-     - and only valid for completed releases; the plan is optional and valid for
-     - all releases.  The three valid types of releases are, in order of ascending 
-     - uncertainity: "completed", "scheduled", and "tentative".  Dates can be
-     - specified as particular day DD/MM/YYYY (e.g., 22/03/2005) or a particular
-     - month MM/YYYY (e.g., 10/2005), or a quarter NQYYYY (e.g., 3Q2005). Obviously
-     - completed releases should include the exact day the release was completed.
-     -
-     - In the following example, we have three completed, two scheduled, and one 
-     - tentative release.
-    -->
-  <releases>
-  </releases>
-</project>
\ No newline at end of file
diff --git a/project-info/project-page-paragraph.html b/project-info/project-page-paragraph.html
deleted file mode 100755
index 184c8df..0000000
--- a/project-info/project-page-paragraph.html
+++ /dev/null
@@ -1 +0,0 @@
-The purpose of this project is to improve the usability of the eclipse.org site, improving productivity and reducing duplication of effort across the eclipse user community.
\ No newline at end of file
diff --git a/style.css b/style.css
deleted file mode 100644
index c0980fa..0000000
--- a/style.css
+++ /dev/null
@@ -1,190 +0,0 @@
-@CHARSET "UTF-8";
-#novaContent {
-	background: url("images/backgroundMainEmpty.png") no-repeat;
-	padding-top: 210px;
-}
-
-#midcolumn {
-	width: 640px;
-	padding: 0 10px 10px 10px;
-}
-
-#rightcolumn {
-	width: 260px;
-}
-
-
-h3 {
-	clear: both;
-}
-
-h7 {
-	font-weight: bold;
-	padding: 5px;
-}
-
-a strong {
-	text-decoration: underline;
-}
-
-
-#novaContent {
-	background: url("images/backgroundMainEmpty.png") no-repeat white;
-	padding-top: 170px;
-}
-
-#introText p.left {
-	width: 48%;
-	float: left;
-}
-
-#introText p.right {
-	width: 48%;
-	float: right;
-}
-
-#feature_1 {
-	float: left;
-	width: 30%;
-	margin-right: 3%;
-}
-
-#feature_2 {
-	float: left;
-	width: 30%;
-	margin-right: 3%
-}
-
-#feature_3 {
-	float: left;
-	width: 30%;
-}
-
-#feature_4 {
-	clear: both;
-	float: left;
-	width: 63%;
-	margin-right: 3%;	
-}
-
-#feature_more {
-	float: left;
-	width: 30%;
-}
-	
-#bigbuttons {
-	position: relative;
-	left: 420px;
-	top: -170px;
-}
-#bigbuttons h3{
-	visibility: hidden;
-}
-
-#bigbuttons a {
-}
-
-#bigbuttons ul li {
-   display:block;
-   list-style-type:none;
-   background-color: red;
-   padding: 0;
-   margin: 0;
-}
-
-#bigbuttons a:hover {
-	text-decoration: none;
-}
-
-#bigbuttons a {
-   display: block;
-   height:77px; width:250px;
-   padding: 0;
-   margin: 20px;
-   text-indent: -9000px;
-   position: absolute;
-}
-
-#buttonDownload {
-   background:transparent url("images/buttonDownload.png") no-repeat 0 0;
-   top: 0px;
-   left: 0px;
-}
-
-#buttonDownload:hover {
-   background:transparent url("images/buttonDownload_sel.png") no-repeat 0 0;
-}
-
-   
-#buttonDocumentation {
-   background:transparent url("images/buttonDocumentation.png") no-repeat 0 0;
-   top: 87px;
-   left: 0px;
-}
-
-#buttonDocumentation:hover {
-   background:transparent url("images/buttonDocumentation_sel.png") no-repeat 0 0;
-}
-
-#buttonSupport {
-   background:transparent url("images/buttonSupport.png") no-repeat 0 0;
-   top: 0px;
-   left: 280px;
-}
-
-#buttonSupport:hover {
-   background:transparent url("images/buttonSupport_sel.png") no-repeat 0 0;
-}
-
-#buttonInvolved {
-   background:transparent url("images/buttonInvolved.png") no-repeat 0 0;
-   top: 87px;
-   left: 280px;
-}
-
-#buttonInvolved:hover {
-   background:transparent url("images/buttonInvolved_sel.png") no-repeat 0 0;
-}
-
-#bigbuttons a * {
-	visibility: hidden;
-}
-
-#headlines {
-}
-
-#headlines ul li {
-	margin: 0 0;
-	list-style-type: none;
-	list-style-image: none;
-}
-
-	
-#headlines div.title {
-	display: inline;
-	margin-right: 0.5em;
-}
-
-#headlines div.meta {
-	display: inline;
-	color: #444444;
-	font-size: smaller;  
-}
-
-#headlines div.item {
-	display: block;
-	}
-	
-#screencast {
-	margin-bottom: 10px;
-}
-
-#newAndNoteworthy a {
-   display: block;
-   width:218px; 
-   height:51px;
-   padding: 0;
-   text-indent: -9000px;
-   background:transparent url("images/bannerNewAndNoteworthy08M4.png") no-repeat 0 0;
-   margin-top: 10px;
-}
\ No newline at end of file
diff --git a/support.php b/support.php
deleted file mode 100644
index 06948d3..0000000
--- a/support.php
+++ /dev/null
@@ -1,28 +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'
-/*******************************************************************************
- * Copyright (c) 2009 
- * 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
- *
- * Contributors:
- *    
- *******************************************************************************/
-
-	$pageTitle 		= "Tycho - Support";
-
-	$html  = <<<EOHTML
-<div id="midcolumn">
-<h2>$pageTitle</h2>
-<p>
-<ul>
-<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;classification=Technology;product=Tycho">Report bugs for Tycho in Bugzilla</a></li>
-<li><a href="https://dev.eclipse.org/mailman/listinfo/tycho-user">tycho-user</a> and <a href="https://dev.eclipse.org/mailman/listinfo/tycho-dev">tycho-dev</a> mailing list</li>
-</ul>
-</p>
-</div>
-EOHTML;
-	# Generate the web page
-	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
\ No newline at end of file
