diff --git a/downloads/_index.html b/downloads/_index.html
new file mode 100644
index 0000000..76e57bf
--- /dev/null
+++ b/downloads/_index.html
@@ -0,0 +1,20 @@
+<div id="primaryLinks">
+	<h3>Primary Links</h3>
+	<ul>
+		<li>
+			<a id="buttonDownload" href="../downloads" title="Download">
+				<strong>Download</strong> Eclipse Distribution, Update Site, Dropins
+			</a>
+		</li>
+		<li>
+			<a id="buttonSupport" href="../support" title="Support">
+				<strong>Support</strong> Documentation, Newsgroup, Videos
+			</a>
+		</li>
+		<li class="toTheRight">
+			<a id="buttonInvolved" href="../developers" title="Getting Involved">
+				<strong>Getting Involved</strong> Git, Workspace Setup, Wiki, Committers
+			</a>
+		</li>
+	</ul>
+</div>
\ No newline at end of file
diff --git a/downloads/_styles.css b/downloads/_styles.css
new file mode 100644
index 0000000..f131517
--- /dev/null
+++ b/downloads/_styles.css
@@ -0,0 +1,69 @@
+#midcolumn {
+	padding-top: 10px;
+}
+
+#midcolumn li .repo-item {
+	margin-bottom: 0px;
+	padding-bottom: 0px;
+}
+
+.repo-item {
+	margin-top: 2px;
+	margin-bottom: 2px;
+}
+
+.repo-label1 { 
+  color: #000000;
+  font-size: 18pt;
+}
+
+.repo1 {
+	padding: 5px 5px 5px 0;
+  border-bottom: 3px solid #D4D4DD;
+}
+
+.repo-label2 { 
+  color: #000000;
+  font-size: 14pt;
+}
+
+.repo2 {
+	padding: 5px 5px 5px 0;
+}
+
+.drop-label { 
+  color: #000000;
+  font-size: 12pt;
+  font-weight: bold;
+	margin-bottom: 0;
+  margin-top: 0;
+  padding-bottom: 0;
+  padding-top: 0;
+}
+
+.drop {
+	margin-top: 0;
+	margin-bottom: 0;
+	padding: 5px 5px 0px 0;
+}
+
+.drop-info {
+	padding-top: 3px;
+}
+
+.drop-separator {
+	border: none;
+	border-bottom: 2px solid #D4D4DD;
+}
+
+.file-size {
+	text-align: right;
+}
+
+.level1 {
+	padding-right: 49px;
+}
+
+.level2 {
+	padding-right: 26px;
+}
diff --git a/downloads/background.jpg b/downloads/background.jpg
new file mode 100644
index 0000000..63b26e5
--- /dev/null
+++ b/downloads/background.jpg
Binary files differ
diff --git a/downloads/custom-scripts.php b/downloads/custom-scripts.php
new file mode 100644
index 0000000..5ff7478
--- /dev/null
+++ b/downloads/custom-scripts.php
@@ -0,0 +1,338 @@
+<?php
+	function getBuildsFrom($branchDirs, $PWD) {
+		$buildDirs = array();
+	
+		foreach ($branchDirs as $branch) {
+			// Some of the builds are of the form <type><YYYYMMDD>-<HHMM>
+			// Others are the usual <type><YYYYMMDDHHMM>
+			$buildDirs[$branch] = loadDirSimple("$PWD/$branch", "[IMNRS](\d{8}-?\d{4})", "d");
+		}
+	
+		// sort by branch (1.2.2 and 1.2.1 will both be in "1.2"), then version (1.2.2 or 1.2.1), then type
+		$builds_temp = array();
+		foreach ($buildDirs as $branch => $dirList) {
+			$version = substr($branch, 0, 3);
+			foreach ($dirList as $dir) {
+				$type = substr($dir, 0, 1);
+	
+				$builds_temp[$version][$branch][$type][] = $dir;
+			}
+		}
+	
+		return $builds_temp;
+	}
+	
+	function reorderAndSplitBuilds($oldBuilds, $buildTypes, $hiddenBuilds) {
+		$newBuilds = array();
+		$releases = array();
+		
+		foreach ($buildTypes as $branch => $types) {
+			$version = substr($branch, 0, 3);
+			foreach ($types as $type => $names) {
+				if ($type == "R" && isset($oldBuilds[$version][$branch][$type])) {
+					$id = $oldBuilds[$version][$branch][$type][0];
+					if (!isset($hiddenBuilds[$branch]) || !in_array($id, $hiddenBuilds[$branch])) {
+						$releases[$version][$branch] = $id;
+					}
+				} else if (array_key_exists($version, $oldBuilds) && array_key_exists($branch, $oldBuilds[$version]) && array_key_exists($type, $oldBuilds[$version][$branch]) && is_array($oldBuilds[$version][$branch][$type])) {
+					if (isset($hiddenBuilds[$branch])) {
+						$newBuilds[$version][$branch][$type] = array();
+						foreach ($oldBuilds[$version][$branch][$type] as $id) {
+							if (!in_array($id, $hiddenBuilds[$branch])) {
+								$newBuilds[$version][$branch][$type][] = $id;
+							}
+						}
+					} else {
+						$newBuilds[$version][$branch][$type] = $oldBuilds[$version][$branch][$type];
+					}
+					rsort($newBuilds[$version][$branch][$type]);
+				}
+			}
+		}
+		return array($newBuilds,$releases);
+	}
+	
+	function getUpdateSiteArchive($zips) {
+		foreach ($zips as $zip) {
+			if (preg_match("/((S|s)ite)|((U|u)pdate)/", $zip)) {
+				return $zip;
+			}
+		}
+		return "";
+	}
+	
+	function getSDKArchive($zips) {
+		foreach ($zips as $zip) {
+			if (preg_match("/SDK/", $zip)) {
+				return $zip;
+			}
+		}
+		return "";
+	}
+	
+	function getBuildLabel($zips) {
+		// the label is the version number plus its appended alias (if any)
+		foreach ($zips as $zip) {
+			preg_match("/(\d\.\d\.\d)((M|RC)\d)?/", $zip, $matches);
+			if (sizeof($matches) > 0) {
+				return preg_replace("/(\d\.\d\.\d)((M|RC)\d)?/", "$1 $2", $matches[0]);
+			}
+		}
+		return "";
+	}
+	
+	function getTypeLabel($type) {
+		if ($type == "R") {
+			return "Release";
+		}
+		if ($type == "M") {
+			return "Maintenance";
+		}
+		if ($type == "S") {
+			return "Stable";
+		}
+		if ($type == "I") {
+			return "Integration";
+		}
+		if ($type == "N") {
+			return "Nightly";
+		}
+		return "";
+	}
+	
+	function getTypeUpdateSite($type) {
+		if ($type == "R") {
+			return "releases";
+		}
+		if ($type == "M") {
+			return "maintenance";
+		}
+		if ($type == "S") {
+			return "milestones";
+		}
+		if ($type == "I") {
+			return "integration";
+		}
+		if ($type == "N") {
+			return "nightly";
+		}
+		return "";
+	}
+	
+	function generateHTMLReleaseList($releases, $projectTitle, $PR, $PWD, $websiteRoot) {
+		// We'll only show the very first release in the list (latest), the others will be reduced by default
+		$display = true;
+	
+		$releaseList = "";
+		if (sizeof($releases) > 0) {
+			$releaseList .= "<li class=\"repo-item\">\n";
+			$releaseList .= "<a href=\"javascript:toggle('repo_releases')\" class=\"repo-label1\">Releases</a>";
+			$releaseList .= "<a name=\"releases\" href=\"#releases\">";
+			$releaseList .= "<img src=\"" . $websiteRoot . "/images/link_obj.gif\" alt=\"Permalink\" width=\"12\" height=\"12\"/>";
+			$releaseList .= "</a>\n";
+			$releaseList .= "<div class=\"repo1\" id=\"repo_releases\">\n";
+			
+			$releaseList .= "<table border=\"0\" width=\"100%\">\n";
+			$releaseList .= "<tr class=\"repo-info\">";
+			$releaseList .= "<td><img src=\"" . $websiteRoot . "/images/22/package-x-generic.png\" alt=\"composite update site\"/></td>";
+			$releaseList .= "<td><b><a href=\"http://download.eclipse.org/" . $PR . "/updates/releases\">Update Site</a></b> for use with <a href=\"http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-127.htm\">p2</a>.</td>";
+			$releaseList .= "<td class=\"file-size level1\"></td>";
+			$releaseList .= "</tr>\n";
+			$releaseList .= "</table>\n";
+			
+			$releaseList .= "<ul>\n";
+			
+			foreach ($releases as $version => $branches) {
+				$htmlVersion = preg_replace("/\./", "_", $version);
+			
+				$releaseList .= "<li  class=\"repo-item\">\n";
+				$releaseList .= "<a href=\"javascript:toggle('repo_releases_" . $htmlVersion . "')\" class=\"repo-label2\">" . $version . " Releases</a>";
+				$releaseList .= "<a name=\"releases_" . $htmlVersion . "\" href=\"#releases_" . $htmlVersion . "\"><img src=\"" . $websiteRoot . "/images/link_obj.gif\" alt=\"Permalink\" width=\"12\" height=\"12\"/></a>\n";
+				
+				$releaseList .= "<div class=\"repo2\" id=\"repo_releases_" . $htmlVersion . "\"";
+				if ($display) {
+					$releaseList .= ">\n";
+				} else {
+					$releaseList .= " style=\"display: none\">\n";
+				}
+				
+				$releaseList .= "<table border=\"0\" width=\"100%\">\n";
+				$releaseList .= "<tr class=\"repo-info\">";
+				$releaseList .= "<td><img src=\"" . $websiteRoot . "/images/16/package-x-generic.png\" alt=\"composite update site\"/></td>";
+				$releaseList .= "<td><b><a href=\"http://download.eclipse.org/" . $PR . "/updates/releases/" . $version . "\">Update Site</a></b> for use with <a href=\"http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-127.htm\">p2</a>.</td>";
+				$releaseList .= "<td class=\"file-size level2\"></td>";
+				$releaseList .= "</tr>\n";
+				$releaseList .= "</table>\n";
+				
+				$releaseList .= "<ul>\n";
+				
+				foreach ($branches as $branch => $ID) {
+					$releaseList .= generateHTMLForBuild($projectTitle, $PR, $PWD, $websiteRoot, $version, $branch, $ID, "releases", $display);
+					
+					// Only display the very latest release
+					if ($display) {
+						$display = false;
+					}
+				}
+				
+				$releaseList .= "</ul>\n";
+				$releaseList .= "</div>\n";
+				$releaseList .= "</li>\n";
+			}
+			
+			$releaseList .= "</ul>\n";	
+			$releaseList .= "</div>\n";
+			$releaseList .= "</li>\n";
+		}
+		return $releaseList;
+	}
+	
+	function generateHTMLBuildList($builds, $projectTitle, $PR, $PWD, $websiteRoot) {
+		// Only display the very latest build
+		$display = true;
+		
+		$buildList = "";
+		if (sizeof($builds) > 0) {
+			foreach ($builds as $version => $branches) {
+				$htmlVersion = preg_replace("/\./", "_", $version);
+			
+				$buildList .= "<li class=\"repo-item\">\n";
+				$buildList .= "<a href=\"javascript:toggle('repo_" . $htmlVersion . "')\" class=\"repo-label1\">" . $version . " Builds</a>";
+				$buildList .= "<a name=\"builds_" . $htmlVersion . "\" href=\"#builds_" . $htmlVersion . "\">";
+				$buildList .= "<img src=\"" . $websiteRoot . "/images/link_obj.gif\" alt=\"Permalink\" width=\"12\" height=\"12\"/>";
+				$buildList .= "</a>\n";
+				
+				$buildList .= "<div class=\"repo1\" id=\"repo_" . $htmlVersion . "\"";
+				if ($display) {
+					$buildList .= ">\n";
+				} else {
+					$buildList .= " style=\"display: none\">\n";
+				}
+				
+				$buildList .= "<ul>\n";
+				
+				foreach ($branches as $branch => $types) {
+					$htmlBranch = preg_replace("/\./", "_", $branch);
+					
+					$buildList .= "<li class=\"repo-item\">\n";
+					$buildList .= "<a href=\"javascript:toggle('repo_" . $htmlBranch . "')\" class=\"repo-label1\">" . $branch . "</a>";
+					$buildList .= "<a name=\"builds_" . $htmlBranch . "\" href=\"#builds_" . $htmlBranch . "\">";
+					$buildList .= "<img src=\"" . $websiteRoot . "/images/link_obj.gif\" alt=\"Permalink\" width=\"12\" height=\"12\"/>";
+					$buildList .= "</a>\n";
+					
+					$buildList .= "<div class=\"repo2\" id=\"repo_" . $htmlBranch . "\"";
+					if ($display) {
+						$buildList .= ">\n";
+					} else {
+						$buildList .= " style=\"display: none\">\n";
+					}
+					
+					$buildList .= "<ul>\n";
+					
+					foreach ($types as $type => $IDs) {
+						$typeLabel = getTypeLabel($type);
+						$typeUpdateSite = getTypeUpdateSite($type);
+						
+						$buildList .= "<li class=\"repo-item\">\n";
+						$buildList .= "<a href=\"javascript:toggle('repo_" . $htmlBranch . "_" . $type . "')\" class=\"repo-label1\">" . $branch . " " . $typeLabel . " Builds</a>";
+						$buildList .= "<a name=\"builds_" . $htmlBranch . "_" . $type . "\" href=\"#builds_" . $htmlBranch . "_" . $type . "\">";
+						$buildList .= "<img src=\"" . $websiteRoot . "/images/link_obj.gif\" alt=\"Permalink\" width=\"12\" height=\"12\"/>";
+						$buildList .= "</a>\n";
+						
+						$buildList .= "<div class=\"repo2\" id=\"repo_" . $htmlBranch . "_" . $type . "\"";
+						if ($display) {
+							$buildList .= ">\n";
+						} else {
+							$buildList .= " style=\"display: none\">\n";
+						}
+						
+						$buildList .= "<ul>\n";
+						
+						foreach ($IDs as $ID) {
+							$buildList .= generateHTMLForBuild($projectTitle, $PR, $PWD, $websiteRoot, $version, $branch, $ID, $typeUpdateSite, $display);
+							
+							// Only display the very latest build
+							if ($display) {
+								$display = false;
+							}
+						}
+						
+						$buildList .= "</ul>\n";	
+						$buildList .= "</div>\n";
+						$buildList .= "</li>\n";
+					}
+					
+					$buildList .= "</ul>\n";	
+					$buildList .= "</div>\n";
+					$buildList .= "</li>\n";
+				}
+				
+				$buildList .= "</ul>\n";	
+				$buildList .= "</div>\n";
+				$buildList .= "</li>\n";
+			}
+		}
+		return $buildList;
+	}
+	
+	function generateHTMLForBuild($projectTitle, $PR, $PWD, $websiteRoot, $version, $branch, $ID, $typeUpdateSite, $display = false) {
+		// YYYY/MM/DD HH:MM
+		$dateFormat = preg_replace("/[IMNRS](\d{4})(\d{2})(\d{2})-?(\d{2})(\d{2})/", "$1/$2/$3 $4:$5", $ID);
+		$zips_in_folder = loadDirSimple("$PWD/$branch/$ID/", "(\.zip|\.tar\.gz)", "f");
+		$archivedSite = getUpdateSiteArchive($zips_in_folder);
+		$SDKArchive = getSDKArchive($zips_in_folder);
+		$buildLabel = getBuildLabel($zips_in_folder);
+		if ($buildLabel == "" || $buildLabel == " ") {
+			$buildLabel = $branch;
+		}
+	
+		$buildHTML = "<li class=\"repo-item\">\n";
+		// PENDING add alias if any in the displayed text
+		$buildHTML .= "<b><a href=\"javascript:toggle('drop_" . $ID . "')\" class=\"drop-label\">" . $buildLabel . " (" . $dateFormat . ")</a></b>";
+		$buildHTML .= "<a name=\"" . $ID . "\" href=\"#" . $ID . "\"><img src=\"" . $websiteRoot . "/images/link_obj.gif\" alt=\"Permalink\" width=\"12\" height=\"12\"/></a>\n";
+		$buildHTML .= "<div class=\"drop\" id=\"drop_" . $ID . "\"";
+		if ($display) {
+			$buildHTML .= ">\n";
+		} else {
+			$buildHTML .= " style=\"display: none\">\n";
+		}
+		
+		$buildHTML .= "<table border=\"0\" width=\"100%\">\n";
+		
+		// UPDATE SITE
+		$buildHTML .= "<tr class=\"repo-info\">";
+		$buildHTML .= "<td><img src=\"" . $websiteRoot . "/images/22/package-x-generic.png\" alt=\"composite update site\"/></td>";
+		$buildHTML .= "<td><b><a href=\"http://download.eclipse.org/" . $PR . "/updates/" . $typeUpdateSite . "/" . $version . "/" . $ID . "\">Update Site</a></b> for use with <a href=\"http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-127.htm\">p2</a>.</td>";
+		$buildHTML .= "<td class=\"file-size level3\"></td>";
+		$buildHTML .= "</tr>\n";
+		
+		$buildHTML .= "<tr class=\"drop-info\"><td colspan=\"3\"><hr class=\"drop-separator\"></td></tr>";
+		
+		// ARCHIVED UPDATE SITE
+		if ($archivedSite != "") {
+			$buildHTML .= "<tr class=\"drop-info\">";
+			$buildHTML .= "<td><img src=\"" . $websiteRoot . "/images/16/package-x-generic.png\" alt=\"archived update site\"/></td>";
+			$buildHTML .= "<td><a href=\"http://www.eclipse.org/downloads/download.php?file=/" . $PR . "/downloads/drops/" . $branch . "/" . $ID . "/" . $archivedSite . "&amp;protocol=http\">Archived update site</a> for local use with <a href=\"http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-127.htm\">p2</a>.</td>";
+			// PENDING retrieve zip size
+			$buildHTML .= "<td class=\"file-size level3\"><i></i></td>";
+			$buildHTML .= "</tr>\n";
+		}
+		
+		// SDK
+		if ($SDKArchive != "") {
+			$buildHTML .= "<tr class=\"drop-info\">";
+			$buildHTML .= "<td><img src=\"" . $websiteRoot . "/images/16/go-down.png\" alt=\"" . $projectTitle . " SDK\"/></td>";
+			$buildHTML .= "<td><a href=\"http://www.eclipse.org/downloads/download.php?file=/" . $PR . "/downloads/drops/" . $branch . "/" . $ID . "/" . $SDKArchive . "&amp;protocol=http\">" . $projectTitle . " SDK</a></td>";
+			// PENDING retrieve zip size
+			$buildHTML .= "<td class=\"file-size level3\"><i></i></td>";
+			$buildHTML .= "</tr>\n";
+		}
+		
+		$buildHTML .= "</table>\n";
+		
+		$buildHTML .= "</div>\n";
+		$buildHTML .= "</li>\n";
+		
+		return $buildHTML;
+	}
+?>
\ No newline at end of file
diff --git a/downloads/index.php b/downloads/index.php
new file mode 100644
index 0000000..450c760
--- /dev/null
+++ b/downloads/index.php
@@ -0,0 +1,57 @@
+<?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'
+	require_once($_SERVER["DOCUMENT_ROOT"] . "/modeling/includes/buildServer-common.php");
+	require_once($_SERVER["DOCUMENT_ROOT"] . "/modeling/includes/downloads-scripts.php");
+	require_once($_SERVER["DOCUMENT_ROOT"] . "/modeling/includes/scripts.php");
+	require_once("./custom-scripts.php");
+	
+	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/modeling/includes/common.css"/>' . "\n\t");
+	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/modeling/includes/downloads.css"/>' . "\n\t");
+	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="styles.css"/>' . "\n\t");
+	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="_styles.css"/>' . "\n\t");
+	$App->AddExtraHtmlHeader('<script src="/modeling/includes/downloads.js" type="text/javascript"></script>' . "\n\t");
+	
+	#### Project dependant variables ####
+	$projectTitle = "ATL";
+	$pageTitle = "ATL - Download";
+	// Path to the downloads area under http://downloads.eclipse.org (will be used by custom-scripts and various "eclipse" scripts)
+	$PR = "mmt/atl";
+	// absolute path to the site's home page (will be used by custom-scripts for images... should probably use css instead)
+	$websiteRoot = "/atl";
+	
+	# version => array of qualifiers
+	# ex : "3.3.0" => array("R201205291042")
+	$hiddenBuilds = array(
+	);
+	#### End variables ####
+	
+	$PWD = getPWD("downloads/drops");
+	$branches = loadDirSimple($PWD, ".*", "d");
+	rsort($branches);
+	
+	$buildtypes = array(
+		"R" => "Release",
+		"S" => "Stable",
+		"I" => "Integration",
+		"M" => "Maintenance",
+		"N" => "Nightly"
+	);
+	$buildTypes = getBuildTypes($branches, $buildtypes);
+	
+	// Retrieve the list of builds from the disk (folder list only)
+	$builds = getBuildsFrom($branches, $PWD);
+	
+	$builds = reorderAndSplitBuilds($builds, $buildTypes, $hiddenBuilds);
+	$releases = $builds[1];
+	$builds = $builds[0];
+	
+	$html = file_get_contents('_index.html');
+	$html .= "<div id=\"midcolumn\">\n";
+	$html .= "<ul>\n";
+	$html .= generateHTMLReleaseList($releases, $projectTitle, $PR, $PWD, $websiteRoot);
+	$html .= generateHTMLBuildList($builds, $projectTitle, $PR, $PWD, $websiteRoot);
+	$html .= "</ul>\n";
+	$html .= "</div>\n\n";
+	
+	# Generate the web page
+	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+?>
diff --git a/downloads/styles.css b/downloads/styles.css
new file mode 100644
index 0000000..2582de8
--- /dev/null
+++ b/downloads/styles.css
@@ -0,0 +1,106 @@
+body {
+	text-align: center;
+}
+
+#leftcol {
+	margin-top: -20px;
+}
+
+#midcolumn {
+	width: 780px;
+	padding-top: 0px;
+	padding-right: 100px;
+	padding-left: 100px;
+	padding-bottom: 10px;
+}
+
+.sideitem {
+	background: url(/eclipse.org-common/themes/Nova/images/thinModalBg.png)
+		repeat-x scroll 0 0;
+}
+
+.sideitem h6 {
+	color: #575757;
+	font-size: 20px;
+	padding-top: -6px;
+}
+
+.areaIcon {
+	margin-left: 50px;
+}
+
+#leftnav li.separator {
+	margin-top: 20px;
+}
+
+#leftnav li.separatorNolink {
+	margin-top: 20px;
+	margin-left: 0;
+	padding-top: 5px;
+	padding-right: 0;
+	list-style-image: none;
+	border-top: 1px dotted #d4d4dd;
+	font-size: 12px;
+	font-weight: bold;
+	color: #575757;
+}
+
+#leftnav li.selected {
+	list-style-image:
+		url(/eclipse.org-common/themes/Nova/images/leftNavSelected.png);
+}
+
+#infoDiv {
+	margin-top: 80px;
+	margin-left: 45px;
+	width: 300px;
+	text-align: left;
+	font-size: 14px;
+	float: left;
+}
+
+.linkBlock {
+	margin-top: 20px;
+	margin-bottom: 20px;
+	margin-left: 20px;
+	float: left;
+	width: 460px;
+}
+
+.link img {
+	position: relative;
+	top: -20px;
+	float: left;
+	padding: 5px;
+}
+
+.link {
+	clear: both;
+	padding: 20px;
+}
+
+.link p.heading {
+	font-size: 16px;
+}
+
+.link p.subText {
+	font-size: 12px;
+}
+
+li p.heading {
+	font-size: 120%;
+	margin-bottom: 5px;
+	margin-top: 5px;
+	text-align: left;
+}
+
+li p.subText {
+	margin-top: 0px;
+	font-size: 80%;
+	text-align: left;
+	font-weight: normal;
+}
+
+.relatedLinks li {
+	list-style-image: none !important;
+}
\ No newline at end of file
