diff --git a/.project b/.project
index 3beefbd..2e0f909 100644
--- a/.project
+++ b/.project
@@ -1,17 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>swtbot-website</name>
+	<name>swtbot</name>
 	<comment></comment>
 	<projects>
 	</projects>
 	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
 	</buildSpec>
 	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 	</natures>
 </projectDescription>
diff --git a/_index.html b/_index.html
deleted file mode 100644
index 903d7b4..0000000
--- a/_index.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<div id="bigbuttons">
-	<h3>Primary Links</h3>
-	<ul>
-		<li><a id="buttonDownload" href="http://wiki.eclipse.org/SWTBot#Latest_snapshot_build" title="Download">Eclipse
-		Distribution, Update Site, Dropins</a></li>
-		<li><a id="buttonDocumentation" href="http://wiki.eclipse.org/SWTBot"
-			title="Documentation">Tutorials, Examples, Videos, Reference Documentation</a></li>
-		<li><a id="buttonSupport" href="http://wiki.eclipse.org/SWTBot/Support" title="Support">Bug
-		Tracker, Newsgroup, Support</a></li>
-		<li><a id="buttonInvolved" href="http://wiki.eclipse.org/SWTBot/Contributing" title="Getting Involved">Contributor Guide, Mailing Lists, Wiki</a></li>
-	</ul>
-</div>
-
-<div id="midcolumn">
-	<h1>What is SWTBot?</h1>
-	<p>SWTBot is an open-source Java based UI/functional testing tool for testing <a href="/swt">SWT</a>, <a href="/">Eclipse</a> and <a href="/gef">GEF</a> based applications.</p>
-
-	<p>SWTBot provides APIs that are simple to read and write. The APIs also hide the complexities involved with SWT and Eclipse. This makes it suitable for UI/functional testing by everyone, not just developers. SWTBot also provides its own set of assertions that are useful for SWT. You can also use your own assertion framework with SWTBot.</p>
-
-	<p>SWTBot integrates with Eclipse PDE, Eclipse headless testing framework, Ant and <a href="http://eclipse.org/tycho">Tycho</a>, so it's easy to use in your IDE and Headless Builds (as part of a CI job for example).</p>
-
-	<p>SWTBot can run on all platforms that SWT runs on. Very few other testing tools provide such a wide variety of platforms.</p>
-
-	<p>Starting from version 2.1.0, SWTBot also provide a <a href="http://wiki.eclipse.org/SWTBot/Generator">Test Recorder and Generator</a> that you can use to generate your test case simply by recording the UI actions as an end-user would perform them. This is really helpful to get quickly a first sketch of your SWTBot scenario and reduce costs of writing tests.</p>
-
-</div>
-
-<div id="rightcolumn">
-
-<p>
-<a class="twitter-timeline"  href="https://twitter.com/search?q=%23SWTBot"  data-widget-id="387570714603053056">Tweets about SWTBot</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>
-</p>
-
-</div>
-
-
-
-<script type="text/javascript">
-
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-910670-2']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-  })();
-
-</script>
-<script type="text/javascript">
-
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', 'UA-414875-5']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-  })();
-
-</script>
\ No newline at end of file
diff --git a/_projectCommon.php b/_projectCommon.php
index d9a941e..fada931 100755
--- a/_projectCommon.php
+++ b/_projectCommon.php
@@ -1,37 +1,31 @@
 <?php
 
+	$pageAuthor		= "Ketan Padegaonkar, Mickael Istria";
+	$pageKeywords	= "SWTBot, UI Testing for SWT, UI Testing for Eclipse, SWT testing, Eclipse testing";
+	$pageTitle 		= "SWTBot &ndash; UI Testing for SWT and Eclipse";
+
+	$App->setGoogleAnalyticsTrackingCode("UA-414875-5");
+
 	# 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 = "Nova";
 
-
 	# Define your project-wide Nav bars here.
 	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
 	# these are optional
-	$Nav->setLinkList(array());
-	$Nav->addCustomNav("SWTBot", 			"/swtbot/");
+	$Nav->addCustomNav("Project Home", 			"/swtbot/index.php");
+	$Nav->addCustomNav("Project Info",	"/swtbot/about.php");
 	$Nav->addCustomNav("Downloads", 			"http://wiki.eclipse.org/SWTBot#Update_Sites");
+	
 	$Nav->addCustomNav("Users Guide", 			"http://wiki.eclipse.org/SWTBot/UsersGuide");
 	$Nav->addCustomNav("Get Support",		"http://wiki.eclipse.org/SWTBot/Support");
 	$Nav->addCustomNav("Contributing", 			"http://wiki.eclipse.org/SWTBot/Contributing");
+	
+	$Nav->addCustomNav("Blogs",					"http://wiki.eclipse.org/SWTBot/Blogs");
 
-	$pageAuthor		= "Ketan Padegaonkar, Mickael Istria";
-	$pageKeywords	= "SWTBot, UI Testing for SWT, UI Testing for Eclipse, SWT testing, Eclipse testing";
-	$pageTitle 		= "SWTBot &ndash; UI Testing for SWT and Eclipse";
+	$Nav->addCustomNav("Who's Using It?", 		"http://wiki.eclipse.org/SWTBot/Who_Is_Using_SWTBot");
+	$Nav->addCustomNav("All Pages", 			"http://wiki.eclipse.org/Category:SWTBot");
 
-
-	$Menu->setMenuItemList(array());
-	$Menu->addMenuItem("Home", "/swtbot/", "_self");
-	$Menu->addMenuItem("Download", "ttp://wiki.eclipse.org/SWTBot#Update_Sites", "_self");
-	$Menu->addMenuItem("Documentation", "http://wiki.eclipse.org/SWTBot/UsersGuide", "_self");
-	$Menu->addMenuItem("Support", ""http://wiki.eclipse.org/SWTBot/Support"", "_self");
-	$Menu->addMenuItem("Contribute", "http://wiki.eclipse.org/SWTBot/Contributing", "_self");
-
-	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="style.css"/>' . "\n\t");
-	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="style2.css"/>' . "\n\t");
-
-	$App->Promotion = TRUE;
 ?>
-
diff --git a/images/backgroundMain.png b/images/backgroundMain.png
deleted file mode 100644
index b237176..0000000
--- a/images/backgroundMain.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 bd115b0..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 8dbf275..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/images/star.png b/images/star.png
deleted file mode 100644
index 17c24b7..0000000
--- a/images/star.png
+++ /dev/null
Binary files differ
diff --git a/index.php b/index.php
index 009cb85..0be21c4 100755
--- a/index.php
+++ b/index.php
@@ -1,10 +1,42 @@
 <?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'
-	$pageTitle 		= "SWTBot";
+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());
 
-	# Paste your HTML content between the EOHTML markers!
-	$html = file_get_contents('_index.html');
+	$pageTitle 		= "SWTBot &ndash; UI Testing for SWT and Eclipse";
+
+	# Add page-specific Nav bars here
+	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
+	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
+	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
+	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);
+
+	# Paste your HTML content between the ob_start/ob_end_clean markers!
+	ob_start();
+?>
+
+	<div id="midcolumn">
+		<h1>What is SWTBot?</h1>
+		<p>SWTBot is an open-source Java based UI/functional testing tool for testing <a href="http://eclipse.org/swt">SWT</a> and <a href="http://eclipse.org">Eclipse</a> based applications.</p>
+
+		<p>SWTBot provides APIs that are simple to read and write. The APIs also hide the complexities involved with SWT and Eclipse. This makes it suitable for UI/functional testing by everyone, not just developers. SWTBot also provides its own set of assertions that are useful for SWT. You can also use your own assertion framework with SWTBot.</p>
+
+		<p>SWTBot integrates with Eclipse PDE, <a href="advanced/ant-integration.html">Ant</a> and <a href="http://eclipse.org/tycho">Tycho</a>, so it's easy to use in your IDE and Headless Builds (as part of a CI job for example).</p>
+
+		<p>SWTBot can run on all platforms that SWT runs on. Very few other testing tools provide such a wide variety of platforms.</p>
+
+		<p>Starting from version 2.1.0, SWTBot also provide a <a href="http://wiki.eclipse.org/SWTBot/Generator">Test Recorder and Generator</a> that you can use to generate your test case simply by recording the UI actions as an end-user would perform them. This is really helpful to get quickly a first sketch of your SWTBot scenario and reduce costs of writing tests.</p>
+
+	</div>
+
+<?php
+$html = ob_get_contents();
+ob_end_clean();
 
 	# Generate the web page
-	$App->generatePage($theme, $Menu, null, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
\ No newline at end of file
+	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+?>
diff --git a/style.css b/style.css
deleted file mode 100644
index 526317a..0000000
--- a/style.css
+++ /dev/null
@@ -1,34 +0,0 @@
-#novaContent {
-	background: url("images/backgroundMain.png") no-repeat;
-	padding-top: 210px;
-}
-
-#midcolumn {
-	width: 600px;
-	padding: 0 10px 10px 10px;
-}
-
-#rightcolumn {
-	width: 300px;
-}
-
-#padding {
-	height: 20px;
-}
-
-h3 {
-	clear: both;
-}
-
-h7 {
-	font-weight: bold;
-	padding: 5px;
-}
-
-a strong {
-	text-decoration: underline;
-}
-
-#rightcolumn ul {
-	margin-left: 10px;
-}
\ No newline at end of file
diff --git a/style2.css b/style2.css
deleted file mode 100644
index ebff5e3..0000000
--- a/style2.css
+++ /dev/null
@@ -1,168 +0,0 @@
-#novaContent {
-	background: url("images/backgroundMain.png") no-repeat white;
-	padding-top: 170px;
-}
-
-#introText p.left {
-	width: 48%;
-	float: left;
-}
-
-#border {
-	border-style: solid;
-	border-width: 5px;
-	border-color: rgb(230,228,242);
-}
-
-#border_top {
-	border-style: solid;
-	border-width: 5px;
-	border-color: rgb(230,228,242);
-	border-bottom: 0px;
-	border-left: 0px;
-	border-right: 0px;
-}
-
-#border p.top {
-	background-color: rgb(230,228,242);
-	border-bottom: 2px solid #FFF;
-	font-size: 14px;
-	font-weight: bold;
-	margin-bottom: 0px;
-	-moz-border-radius-topleft:3px;
-	-moz-border-radius-topright:3px;
-}
-
-#introText p.right {
-	width: 48%;
-	float: right;
-}
-
-#feature_axf {
-	float: left;
-	width: 30%;
-	margin-right: 3%;
-}
-
-#feature_agf {
-	float: left;
-	width: 30%;
-	margin-right: 3%;
-}
-
-#feature_escape {
-	float: left;
-	width: 30%;
-	margin-right: 3%
-}
-
-#feature_generation {
-	float: left;
-	width: 30%;
-}
-
-#feature_experience {
-	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;
-}
-
-
-/*
-#screencast {
-	margin: 20px;
-	position: relative;
-	left: 50px;
-	width: 480px;
-	background-color: black;
-	clear: both;
-	height: 340px;
-	color: white;
-	text-align: center;
-	vertical-align: middle;
-}
-*/
\ No newline at end of file
