diff --git a/html/babel.css b/html/babel.css
index e45e12a..b799bb9 100644
--- a/html/babel.css
+++ b/html/babel.css
Binary files differ
diff --git a/html/content/en_login.php b/html/content/en_login.php
index 3818d08..3dd2cca 100644
--- a/html/content/en_login.php
+++ b/html/content/en_login.php
@@ -1,7 +1,71 @@
 <div id="maincontent">
 <div id="midcolumn">
 
+
+
 <h1><?= $pageTitle ?></h1>
+
+<div id="index-page">
+
+	<a href="https://bugs.eclipse.org/bugs/createaccount.cgi"><img src="http://dev.eclipse.org/large_icons/categories/preferences-desktop-peripherals.png">	<h2>A Bugzilla Account is all you need</h2></a>
+    <br style='clear: both;'>
+	<p>If you don't already have an Eclipse Bugzilla account then <a href="https://bugs.eclipse.org/bugs/createaccount.cgi">create one today</a>.  
+	It takes Babel a few minutes to receive your new Bugzilla account information. 
+	If logging in doesn't work right away try again before complaining.</p>
+
+    <br style='clear: both;'>
+	<p>If you already have an Eclipse Bugzilla account, then log in and started helping Eclipse speak your language.</p>
+
+
+
+<form style="margin-left: 35px;" name="frmLogin" method="post">
+<div>
+
+	<?php 
+		if($GLOBALS['g_ERRSTRS'][0]){ 
+			?>
+			  <img style='margin-left: 70px;' src='http://dev.eclipse.org/small_icons/actions/process-stop.png'>
+		      <div style='color: red; font-weight: bold; '><?=$GLOBALS['g_ERRSTRS'][0]?></div>
+		      <br style='clear: both;'>
+		    <?
+	    }else{
+			?>
+	    		<img style='margin-left: 70px;' src="http://dev.eclipse.org/small_icons/emblems/emblem-important.png">	<h2 style='font-size: 14px; margin-top: 0px; background-color: yellow;'>Use your Bugzilla login information</h2>
+		    	<br style='clear: both;'>
+		   <?
+	    }
+	 ?>
+	
+	<div style='width: 70px; float: left;'>Email:</div>
+	<input type="text" name="username" value="<?= $USERNAME ?>" size="42" maxlength="255" /> 
+	
+	<?php if($GLOBALS['g_ERRSTRS'][1]){ print "<div>".$GLOBALS['g_ERRSTRS'][1]."</div>"; } ?>
+	
+</div>
+
+<div>
+	<div style='width: 70px; float: left;'>Password:</div>
+	<input type="password" name="password" value="<?= $PASSWORD ?>" size="42" maxlength="255" /> 
+	<?= $GLOBALS['g_ERRSTRS'][2] ?>
+</div>
+
+<div style='margin-left: 65px;'>
+	<input type="checkbox" name="remember" value="1" <?= $REMEMBER ?> />remember me
+	<div style='float: right; margin-right: 100px;'><a href="https://bugs.eclipse.org/bugs/index.cgi?GoAheadAndLogIn=1#forgot">Forgot my password</a> </div>
+	
+</div>
+
+<div style='margin-left: 65px;'>
+<input type="submit" name="submit" value="Login" style="font-size:14px;" />
+</div>
+
+</form>
+	
+</div>
+
+
+<!--  
+
 <p>Welcome to Babel - the Eclipse translation tool. Help globalize Eclipse by providing 
 translations for the various messages, dialogs and strings found in Eclipse. Rate existing translations to help us
 provide high-quality translation packs.</p>
@@ -41,7 +105,10 @@
 		<li><a href="//www.eclipse.org/babel/">Babel project home</a></li>
 	</ul>
 </div>
+-->
+
 </div>
+
 </div>
 <script language="javascript">
 	document.forms['frmLogin'].username.focus();
diff --git a/html/content/en_map_files.php b/html/content/en_map_files.php
index e1110fb..d9e032c 100644
--- a/html/content/en_map_files.php
+++ b/html/content/en_map_files.php
@@ -25,7 +25,7 @@
   <td style='width:100px; color:red;'><?= $GLOBALS['g_ERRSTRS'][4] ?></td>
 </tr>
 <tr>
-  <td><a href="http://dev.eclipse.org/viewcvs/index.cgi">ViewVC</a> download URL to map file:</td><td><input type="text" name="location" value="<?= $LOCATION ?>" size="80" onchange="fnCheckUrl();" /></td>
+  <td><a href="http://dev.eclipse.org/viewcvs/index.cgi">ViewCVS</a> download URL to map file:</td><td><input type="text" name="location" value="<?= $LOCATION ?>" size="80" onchange="fnCheckUrl();" /></td>
   <td style='width:100px; color:red;'><?= $GLOBALS['g_ERRSTRS'][2] ?></td>
 </tr>
 <tr>
@@ -48,7 +48,8 @@
 </table>
 </form>
 
-
+</div>
+</div>
 
 <script language="javascript">
 	function fnSetVersionList() {
@@ -75,7 +76,7 @@
 	
 	function fnCheckUrl() {
 		if(!document.form1.location.value.match(/view=co/)) {
-			alert("The ViewVC URL must contain view=co");
+			alert("The ViewCVS URL must contain view=co");
 			document.form1.submit.disabled = "disabled";
 			
 		}
diff --git a/html/downloads.php b/html/downloads.php
new file mode 100644
index 0000000..df5df0f
--- /dev/null
+++ b/html/downloads.php
@@ -0,0 +1,55 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2007 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:
+ *    Paul Colton (Aptana)- initial API and implementation
+ *    Eclipse Foundation
+*******************************************************************************/
+require("global.php");
+InitPage("");
+
+$pageTitle 		= "Babel Project";
+$pageKeywords 	= "translation,language,nlpack,pack,eclipse,babel";
+
+include("head.php");
+
+?>
+
+<h1 id="page-message">Download Language Packs for Eclipse</h1>
+<div id="index-page">
+	
+	 <a href="http://download.eclipse.org/technology/babel/"><img src="http://dev.eclipse.org/large_icons/apps/accessories-text-editor.png"><h2>Language Pack Download Site</h2></a>
+      <br style='clear: both;'>
+	  <p>Before you <a href="http://download.eclipse.org/technology/babel/">download</a> and use any of the language packs, please read these known problems:</p>
+		
+	  <ol id="known-issues" style='margin-left: 10px;'>
+	  	<li>The language packs contain translated string for all the Eclipse Foundation Projects.
+	  	 Unfortunately, you do not have all the Eclipse Foundation Projects installed in your IDE.
+	  	 Thus, when you start Eclipse, the error log will accumulate warnings like these:
+	  		<ul style='margin-left: 25px;'>
+				<li class="stop">Bundle ... was not resolved.
+				<li>And below that, a sub-message of:
+				<li class="stop">Missing host ...
+				<li>e.g., Missing host org.eclipse.wst.core_2.1.0
+				<li>There will also be an error:
+				<li class="stop">One or more bundles are not resolved because the following root constraints are not resolved:
+				<li>with the same sub-messages	  		
+	  		</ul>
+	  	<li>Not all of the existing Eclipse Foundation Projects are included in Babel yet.  
+	  	If you encounter a project that you would like to help translate, <a href="importing.php">tell that project's leaders</a>.
+	  	<li>Not all languages are included in Babel yet.
+	  	Request an additional language through <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?bug_file_loc=http%3A%2F%2F&bug_severity=normal&bug_status=NEW&comment=&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&description=&flag_type-1=X&flag_type-2=X&flag_type-4=X&flag_type-6=X&form_name=enter_bug&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Linux&priority=P3&product=Babel&rep_platform=PC&short_desc=Please%20add%20a%20new%20language%20to%20Babel&version=unspecified">Bugzill</a>.
+	  </ol>
+	
+</div>
+
+<script>YAHOO.languageManager.getAjaxLanguages();</script>
+
+<?php
+	include("foot.php");
+?>
\ No newline at end of file
diff --git a/html/export/generate1.php b/html/export/generate1.php
new file mode 100755
index 0000000..49b0749
--- /dev/null
+++ b/html/export/generate1.php
@@ -0,0 +1,300 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2008 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:
+ *    Eclipse Foundation - Initial API and implementation
+*******************************************************************************/
+
+/* 
+ * Documentation: http://wiki.eclipse.org/Babel_/_Server_Tool_Specification#Outputs
+ */
+//TODO handle versions, however that works; files.version is like "3.4" for Eclipse 3.4
+
+/*
+ * Globals
+ */
+$temporary_dir = "tmp_generated/";
+$staging_update_site = "staging/";
+$source_files_for_generate = "source_files_for_generate/";
+
+$leader1 = "";
+$leader1S= "";
+$leader = ". . ";
+$leaderS= ". . ";
+$generated_timestamp = date("Ymdhis");
+
+/*
+ * Clear the staging site
+ */
+if( file_exists( $staging_update_site ) ) {
+	exec( "rm -rf $staging_update_site*" );
+} else {
+	exec( "mkdir $staging_update_site" );
+}
+if( file_exists( "${staging_update_site}plugins/" ) ) {
+        exec( "rm -rf ${staging_update_site}plugins/*" );
+} else {
+        exec( "mkdir ${staging_update_site}plugins/" );
+}
+if( file_exists( "${staging_update_site}features/" ) ) {
+        exec( "rm -rf ${staging_update_site}features/*" );
+} else {
+        exec( "mkdir ${staging_update_site}features/" );
+}
+/*
+ * Get the data (plugins, files, translations) from the live database
+ */
+$dbh = mysql_connect( 'localhost', 'babelstg_rw', '8623xsaas2.' );
+mysql_select_db( 'babelstg', $dbh );
+
+/*
+ * Generate one language pack per language
+ */
+$site_xml = '';
+$language_result = mysql_query( 'SELECT * FROM languages WHERE languages.is_active' );
+while( ($language_row = mysql_fetch_assoc($language_result)) != null ) {
+	$language_name = $language_row['name'];
+	$language_iso  = $language_row['iso_code'];
+	echo "${leader1}Generating language pack for $language_name ($language_iso)(" . $language_row['language_id'] . ")\n";
+
+	/*
+	 * Determine which plug-ins need to be in this language pack.
+	 */
+	$file_result = mysql_query( "SELECT DISTINCT files.file_id, files.name 
+		FROM files, strings, translations
+	  	WHERE files.file_id = strings.file_id
+		AND strings.string_id = translations.string_id
+		AND translations.language_id = ". $language_row['language_id'] . "
+		AND translations.is_active
+		AND files.is_active ");
+	$plugins = array();
+	while( ($file_row = mysql_fetch_assoc($file_result)) != null ) {
+		if( preg_match( "/^([a-zA-Z0-9\.]+)\/(.*)$/", $file_row['name'], $matches ) ) {
+			$file_row['subname'] = $matches[2];
+			$plugins[$matches[1]][] = $file_row;
+		} else {
+			echo "  WARNING: no plug-in name found in file " . $file_row['file_id'] . " \"" . $file_row['name'] . "\"\n";
+		}
+	}
+	/*
+	 * Generate one plug-in fragment for each plug-in
+	 */
+	foreach ($plugins as $plugin_name => $plugin_row ) {
+		echo "${leader1}${leader}Generating plug-in fragment $plugin_name \n";
+		/*
+		 * Clean and create the temporary directory
+		 */
+		if ( file_exists( $temporary_dir ) ) {
+			exec( "rm -rf $temporary_dir; mkdir $temporary_dir" );
+		} else {
+			exec( "mkdir $temporary_dir" );
+		}
+
+		/*
+		 * Generate each *.properties file
+		 */
+		foreach ($plugin_row as $properties_file) {
+			/*
+			 * Convert the filename to *_lang.properties, e.g., foo_fr.properties
+			 */
+			$filename = $properties_file['subname'];
+			if( preg_match( "/^(.*)\.properties$/", $filename, $matches ) ) {
+				$filename = $matches[1] . '_' . $language_iso . '.properties';
+			}
+			echo "${leader1}${leader}${leader}Generating properties file $filename (" . $properties_file['file_id'] . ")\n";
+			/*
+			 * Create any needed sub-directories
+			 */
+			$fullpath =  $temporary_dir . $filename;
+			preg_match( "/^((.*)\/)?(.+?)$/", $fullpath, $matches );
+			$dirs1 = split( "\/", $matches[1] );
+			$dirs2 = array();
+			$d = '';
+			foreach ( $dirs1 as $each ) {
+				if( $each ) {
+					$d .= $each . '/';
+					$dirs2[] = $d;
+				}
+			}
+			foreach( $dirs2 as $each ) {
+				if( !file_exists( $each) ) {
+					exec( "mkdir " . $each );
+				}
+			}
+			/*
+			 * Start writing to the file
+			 */
+			$outp = fopen( $fullpath, "w" );
+			fwrite( $outp, "# Copyright by many contributors; see http://babel.eclipse.org/\n" ); 
+			//TODO correct copyrights from all contributors
+			/*
+			 * For each string that is translated in this file, write it out
+			 * Note that if a string is not translated, then it will not be
+			 * included and thus Eclipse will pick up the default string for
+			 * that key from the default *.properities file. Thus we only 
+			 * include the strings that are translated.
+			 */
+			$sql = "
+				SELECT 
+				    strings.name AS `key`, 
+				    strings.value AS orig, 
+				    translations.value AS trans
+					FROM strings, translations
+					WHERE strings.string_id = translations.string_id
+					AND translations.language_id = " . $language_row['language_id'] . "
+					AND strings.file_id = " . $properties_file['file_id'] . "
+					AND translations.is_active
+				";
+			$strings_result = mysql_query( $sql );
+			while( ($strings_row = mysql_fetch_assoc($strings_result)) != null ) {
+				fwrite( $outp, $strings_row['key'] . "=" );
+				echo "${leader1S}${leaderS}${leaderS}${leaderS}" . $strings_row['key'] . "=";
+				if( $strings_row['trans'] ) {
+					fwrite( $outp, $strings_row['trans'] );
+					echo $strings_row['trans'];
+				} else {
+					fwrite( $outp, $strings_row['orig'] );
+				}
+				fwrite( $outp, "\n" );
+				echo "\n";
+			}
+			/*
+			 * Finish the properties file
+			 */
+			fclose( $outp );
+			echo "${leader1}${leader}${leader}completed  properties file $filename\n";
+		}
+		/*
+		 * Copy in the various legal files
+		 */
+		exec( "cp ${source_files_for_generate}about.html ${temporary_dir}" );
+		exec( "cp ${source_files_for_generate}license.html ${temporary_dir}" );
+		exec( "cp ${source_files_for_generate}epl-v10.html ${temporary_dir}" );
+		exec( "cp ${source_files_for_generate}eclipse_update_120.jpg ${temporary_dir}" );
+		/*
+		 * Generate the META-INF/MANIFEST.MF file
+		 */
+		$parent_plugin_id = $plugin_name;
+		$fragment_id = "${parent_plugin_id}.nl_$language_iso";
+		$fragment_major_version = "0.2.0"; //TODO what version number should these plugins be?
+		$fragment_version = $fragment_major_version . ".v" . $generated_timestamp;
+		$fragment_filename = $fragment_id . "_" . $fragment_version . ".jar";
+		$parent_min_version = "0.0.0"; //TODO specify a min version (when versions are supported)
+		$parent_max_version = "9.9.9"; //TODO specify a max version (when versions are supported)
+
+		$plugins[$plugin_name]['id'] = $fragment_id;
+		$plugins[$plugin_name]['version'] = $fragment_version;
+
+		exec( "mkdir $temporary_dir/META-INF" );
+		$outp = fopen( "$temporary_dir/META-INF/MANIFEST.MF", "w" );
+		fwrite( $outp, "Manifest-Version: 1.0\n");
+		fwrite( $outp, "Bundle-Name: $parent_plugin_id $language_name NLS Support\n");
+		fwrite( $outp, "Bundle-SymbolicName: $fragment_id ;singleton=true\n");
+		fwrite( $outp, "Bundle-Version: $fragment_version\n");
+		fwrite( $outp, "Bundle-Vendor: Eclipse Foundation Inc.\n");
+		fwrite( $outp, "Fragment-Host: $parent_plugin_id;bundle-version=\"[$parent_min_version,$parent_max_version)\"\n");
+		fclose( $outp );
+		/*
+		 * Jar up this directory as the fragment plug-in jar
+		 */
+		system( "cd $temporary_dir; /home/bfreeman/jdk1.6.0_04/bin/jar cfM ../${staging_update_site}plugins/$fragment_filename ." );
+		echo "${leader1}${leader}completed  plug-in fragment $plugin_name\n";
+	}
+        /*
+         * Clean and create the temporary directory
+         */
+        if ( file_exists( $temporary_dir ) ) {
+        	exec( "rm -rf $temporary_dir; mkdir $temporary_dir" );
+        } else {
+        	exec( "mkdir $temporary_dir" );
+        }
+	/*
+	 * Create the feature.xml
+	 *
+	 * TODO <url><update label=... url=... and <url><discovery label=... url=... are not implemented
+	 *
+  	 * <url>
+	 *   <update label="%updateSiteName" url="http://update.eclipse.org/updates/3.2" /> 
+	 *   <discovery label="%updateSiteName" url="http://update.eclipse.org/updates/3.2" /> 
+	 * </url>
+	 */
+	$feature_id = "org.eclipse.nls.$language_iso";
+        $feature_major_version = "0.2.0"; //TODO what version number should this feature be?
+        $feature_version = $feature_major_version . ".v" . $generated_timestamp;
+        $feature_filename = $feature_id . "_" . $feature_version . ".jar";
+
+	$outp = fopen( "$temporary_dir/feature.xml", "w" );
+	fwrite( $outp, "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> 
+<feature 
+  id=\"$feature_id\" 
+  label=\"Eclipse Language Pack for $language_name\"
+  image=\"eclipse_update_120.jpg\"
+  provider-name=\"Eclipse Foundation Inc.\" 
+  version=\"$feature_version\">
+<license url=\"license.html\">" 
+	. htmlspecialchars( file_get_contents( "${source_files_for_generate}license.txt" ) ) . "</license>
+<description>Translations in $language_name for all Eclipse Projects</description>
+" );
+	foreach ($plugins as $plugin_name => $plugin_row ) {
+		fwrite( $outp, '<pluging fragment="true" id="'
+			. $plugin_row['id'] . '" unpack="false" version="'
+			. $plugin_row['version'] . '"/>
+' );
+	}
+	fwrite( $outp, '</feature>
+' );
+	fclose( $outp );
+        /*
+         * Jar up this directory as the feature jar
+         */
+        system( "cd $temporary_dir; /home/bfreeman/jdk1.6.0_04/bin/jar cfM ../${staging_update_site}features/$feature_filename ." );
+	/*
+	 * Register this feature with the site.xml
+	 */
+	$site_xml .= "<feature url=\"features/$feature_filename\" id=\"$feature_id\" version=\"$feature_version\">
+  <category name=\"Language Packs\"/></feature>
+";
+	echo "${leader1}completed  language pack for $language_name ($language_iso)\n";
+}
+/*
+ * TODO <site mirrorsURL=... is not yet implemented
+ */
+$outp = fopen( "${staging_update_site}site.xml", "w" );
+fwrite( $outp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<site>
+  <description url=\"http://babel.eclipse.org/\">This update site contains
+user-contributed translations of the strings in all Eclipse projects. Please
+see the http://babel.eclipse.org/ Babel project web pages for a full how-to-use
+explanation of these translations as well as how you can contribute to
+the translations of this and future versions of Eclipse.</description>
+  <category-def name=\"Language Packs\" label=\"Language Packs\">
+    <description>Language packs for all Eclipse projects</description>
+  </category-def>
+" );
+fwrite( $outp, $site_xml );
+fwrite( $outp, "</site>
+" );
+fclose( $outp );
+
+echo "Completed generating update site\n";
+
+/*
+2. what happens if the translation feature includes plug-in fragments for
+	plug-ins that are not in the current image?
+	does it load correctly and ignore those fragments? if so, good
+   A: warnings appear in the run-time error log
+	does it fail to load? if so, then we need to generate different features, perhaps
+		one feature for each plug or else we need to know more about the project
+		distro structure to know which plug-ins to put in each feature
+	what happens if those plug-ins are later added - does it load the strings now?
+   A: probably not
+3. need to handle different versions of each feature/plugin/platform; generate different
+	language packs for each
+*/
+
+?>
diff --git a/html/export/source_files_for_generate/about.html b/html/export/source_files_for_generate/about.html
new file mode 100755
index 0000000..c80c773
--- /dev/null
+++ b/html/export/source_files_for_generate/about.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 22, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor\'s license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+
+</body>
+</html>
diff --git a/html/export/source_files_for_generate/eclipse_update_120.jpg b/html/export/source_files_for_generate/eclipse_update_120.jpg
new file mode 100644
index 0000000..bfdf708
--- /dev/null
+++ b/html/export/source_files_for_generate/eclipse_update_120.jpg
Binary files differ
diff --git a/html/export/source_files_for_generate/epl-v10.html b/html/export/source_files_for_generate/epl-v10.html
new file mode 100644
index 0000000..ed4b196
--- /dev/null
+++ b/html/export/source_files_for_generate/epl-v10.html
@@ -0,0 +1,328 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 9">
+<meta name=Originator content="Microsoft Word 9">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Revision>2</o:Revision>
+  <o:TotalTime>3</o:TotalTime>
+  <o:Created>2004-03-05T23:03:00Z</o:Created>
+  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+  <o:Pages>4</o:Pages>
+  <o:Words>1626</o:Words>
+  <o:Characters>9270</o:Characters>
+   <o:Lines>77</o:Lines>
+  <o:Paragraphs>18</o:Paragraphs>
+  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+  <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{font-family:Tahoma;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+	{mso-style-name:"Balloon Text";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:8.0pt;
+	font-family:Tahoma;
+	mso-fareast-font-family:"Times New Roman";}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style>
+</head>
+
+<body lang=EN-US style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
+
+</div>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/html/export/source_files_for_generate/license.html b/html/export/source_files_for_generate/license.html
new file mode 100644
index 0000000..c6af966
--- /dev/null
+++ b/html/export/source_files_for_generate/license.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<title>Eclipse.org Software User Agreement</title>
+</head>
+
+<body lang="EN-US" link=blue vlink=purple>
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>March 17, 2005</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+   
+<h3>Applicable Licenses</h3>   
+   
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
+   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+   
+<ul>
+	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>   
+ 
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+	<li>The top-level (root) directory</li>
+	<li>Plug-in and Fragment directories</li>
+	<li>Inside Plug-ins and Fragments packaged as JARs</li>
+	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+	<li>Feature directories</li>
+</ul>
+		
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
+	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+   
+<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
+</body>
+</html>
diff --git a/html/export/source_files_for_generate/license.txt b/html/export/source_files_for_generate/license.txt
new file mode 100644
index 0000000..c3d479d
--- /dev/null
+++ b/html/export/source_files_for_generate/license.txt
@@ -0,0 +1,97 @@
+ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT
+March 17, 2005
+
+Usage Of Content
+
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW, THEN YOU MAY NOT USE THE CONTENT.
+
+Applicable Licenses
+
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public
+License Version 1.0 ("EPL"). A copy of the EPL is provided with this
+Content and is also available at http://www.eclipse.org/legal/epl-v10.html.
+For purposes of the EPL, "Program" will mean the Content.
+
+Content includes, but is not limited to, source code, object code,
+documentation and other files maintained in the Eclipse.org CVS
+repository ("Repository") in CVS modules ("Modules") and made available
+as downloadable archives ("Downloads").
+
+- Content may be structured and packaged into modules to facilitate delivering,
+extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),
+plug-in fragments ("Fragments"), and features ("Features").
+- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)
+in a directory named "plugins".
+- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.
+Each Feature may be packaged as a sub-directory in a directory named "features".
+Within a Feature, files named "feature.xml" may contain a list of the names and version
+numbers of the Plug-ins and/or Fragments associated with that Feature.
+- Features may also include other Features ("Included Features"). Within a Feature, files
+named "feature.xml" may contain a list of the names and version numbers of Included Features.
+
+Features may also include other Features ("Included Features"). Files named
+"feature.xml" may contain a list of the names and version numbers of
+Included Features.
+
+The terms and conditions governing Plug-ins and Fragments should be
+contained in files named "about.html" ("Abouts"). The terms and
+conditions governing Features and Included Features should be contained
+in files named "license.html" ("Feature Licenses"). Abouts and Feature
+Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:
+
+- The top-level (root) directory
+- Plug-in and Fragment directories
+- Inside Plug-ins and Fragments packaged as JARs
+- Sub-directories of the directory named "src" of certain Plug-ins
+- Feature directories
+
+Note: if a Feature made available by the Eclipse Foundation is installed using the
+Eclipse Update Manager, you must agree to a license ("Feature Update
+License") during the installation process. If the Feature contains
+Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform
+you where you can locate them. Feature Update Licenses may be found in
+the "license" property of files named "feature.properties". Such Abouts,
+Feature Licenses and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your
+use of the associated Content in that directory.
+
+THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
+
+- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
+- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
+- IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)
+- Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)
+- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)
+
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR
+TO USE OF THE CONTENT. If no About, Feature License or Feature Update License
+is provided, please contact the Eclipse Foundation to determine what terms and conditions
+govern that particular Content.
+
+Cryptography
+
+Content may contain encryption software. The country in which you are
+currently may have restrictions on the import, possession, and use,
+and/or re-export to another country, of encryption software. BEFORE
+using any encryption software, please check the country's laws,
+regulations and policies concerning the import, possession, or use,
+and re-export of encryption software, to see if this is permitted.
+
+Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
+
diff --git a/html/importing.php b/html/importing.php
new file mode 100644
index 0000000..40f530e
--- /dev/null
+++ b/html/importing.php
@@ -0,0 +1,62 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2007 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:
+ *    Paul Colton (Aptana)- initial API and implementation
+ *    Eclipse Foundation
+*******************************************************************************/
+require("global.php");
+InitPage("");
+
+$pageTitle 		= "Babel Project";
+$pageKeywords 	= "translation,language,nlpack,pack,eclipse,babel";
+
+include("head.php");
+
+
+
+?>
+
+<h1 id="page-message">Help Getting Projects into Babel</h1>
+<div id="index-page">
+	
+
+
+	<a href="https://bugs.eclipse.org/bugs/enter_bug_wizard.cgi"><img src="http://dev.eclipse.org/large_icons/apps/system-users.png"><h2>Eager Translators</h2></a>
+	<br style='clear: both;'>
+	<p>
+	If Babel is missing an Eclipse project and you would like to help translate this project, follow the steps below to open a Bugzilla bug. 
+	Opening a bug is the first step in encourage the project to participate in Babel by letting them know translators are out there and willing to help.
+	</p>
+	<ol style='margin-left: 20px; margin-top: 0px;'>
+		<li><a target="_blank" href="https://bugs.eclipse.org/bugs/enter_bug_wizard.cgi">Click here</a> to start the process of opening a bug on Eclipse Bugzilla system.
+		<li>Follow the instructions and find the project you want included in Babel.
+		<li>Leave a comment that politely asks the project leads to import their project into Babel. 
+			<br>Example:<p>"The Babel project aims to help Eclipse projects get translated into new languages.  Your project is not currently integrated with Babel.
+			Please follow these instructions: http://babel.eclipse.org/importing.php"
+		<li>Submit the bug. 
+	</ol> 
+
+	<a href="login.php"><img src="http://dev.eclipse.org/large_icons/apps/preferences-desktop-theme.png"><h2>Project Leads</h2></a>
+	<br style='clear: both;'>
+	<p>
+	If you are a project lead and your project is not included in Babel then follow the steps below.
+	</p>
+	<ol style='margin-left: 20px; margin-top: 0px;'>
+		<li><a href="login.php">Log into Babel</a>.
+		<li>Click on the 'FOR COMMITTERS' link at the top left hand corner of the web page.
+		<li>Follow the instructions on that page, good luck!
+	</ol>	
+		
+</div>
+
+<script>YAHOO.languageManager.getAjaxLanguages();</script>
+
+<?php
+	include("foot.php");
+?>
\ No newline at end of file
diff --git a/html/index.php b/html/index.php
index ac091e8..30c41f3 100644
--- a/html/index.php
+++ b/html/index.php
@@ -30,7 +30,37 @@
 ?>
 
 <h1 id="page-message">Welcome to the Babel Project</h1>
-<div>
+<div id="index-page">
+
+	  <a href="downloads.php"><img src="http://dev.eclipse.org/large_icons/apps/internet-web-browser.png"><h2>Eclipse Speaks your Langauge</h2></a>
+      <br style='clear: both;'>
+	  <p><a href="downloads.php">Download a language pack</a> in one of many different languages.</p>
+         
+	  <a href="login.php"><img src="http://dev.eclipse.org/large_icons/apps/accessories-text-editor.png"><h2>Help Translate Eclipse</h2></a>
+      <br style='clear: both;'>
+	  <p>Eclipse needs help from everyone in the community to <a href="login.php">speak in many tongues</a>.</p>
+      
+	  <a href="map_files.php"><img src="http://dev.eclipse.org/large_icons/apps/system-users.png"><h2>Add an Existing Eclipse Project to Babel</h2></a>
+      <br style='clear: both;'>
+	  <p>Find out how simple it is to include any existing Eclipse project <a href="map_files.php"> in Babel</a>.</p>
+	   
+<!--  
+<br>
+<br>
+<br>
+
+	- consume
+         - page explaining how to get them and current caveats
+         
+      - contribute translations
+         - login page the explains what it takes and make it VERY clear you use your bugzilla login
+         - need to find out how long it takes from creating bugzilla account to being able to login (Denis)?
+      - translate your project
+         - a place for project leads and other to find out how  simple it is to get your project babelized 
+
+
+
+
 	<h2>Eclipse in your language</h2>
 	
 	<div style='float: right; border: 0px solid black; background-color: lightblue;'>
@@ -82,8 +112,9 @@
  	So what are you waiting for?
  	</p>
 	
- 	
 	<div class="clearing"></div>
+--> 	
+	
 </div>
 
 <script>YAHOO.languageManager.getAjaxLanguages();</script>
diff --git a/html/login.php b/html/login.php
index b64d1c8..9be8b56 100755
--- a/html/login.php
+++ b/html/login.php
@@ -16,7 +16,7 @@
 require_once(BABEL_BASE_DIR . "classes/system/user.class.php");
 require_once(BABEL_BASE_DIR . "classes/system/session.class.php");
 
-$pageTitle 		= "Babel Login";
+$pageTitle 		= "Contribute Translations to Babel";
 $pageKeywords 	= "translation,language,nlpack,pack,eclipse,babel";
 
 $USERNAME 	= $App->getHTTPParameter("username", "POST");
diff --git a/html/map_files.php b/html/map_files.php
index 2145d3a..77e701f 100644
--- a/html/map_files.php
+++ b/html/map_files.php
@@ -10,12 +10,18 @@
  *    Eclipse Foundation - Initial API and implementation
 *******************************************************************************/
 include("global.php");
-InitPage("login");
+
+InitPage("");
 
 global $User;
 global $App, $dbh;
-if(!$User->is_committer) {
-	exitTo("error.php?errNo=3214","error: 3214 - you must be an Eclipse committer to access this page.");
+
+if(!isset($User->userid)) {
+	exitTo("importing.php");
+}
+
+if(!isset($User->is_committer)) {
+	exitTo("login.php?errNo=3214","error: 3214 - you must be an Eclipse committer to access this page.");
 }
 
 require(BABEL_BASE_DIR . "classes/file/file.class.php");
