diff --git a/org.eclipse.jdt.ui.vcm/.classpath b/org.eclipse.jdt.ui.vcm/.classpath
deleted file mode 100644
index b2cd8dd..0000000
--- a/org.eclipse.jdt.ui.vcm/.classpath
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry kind="src" path="vcm"/>
-    <classpathentry kind="src" path="/org.eclipse.core.boot"/>
-    <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
-    <classpathentry kind="src" path="/org.eclipse.core.resources"/>
-    <classpathentry kind="src" path="/org.eclipse.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.vcm.core"/>
-    <classpathentry kind="src" path="/org.eclipse.vcm.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.jdt.ui"/>
-    <classpathentry kind="src" path="/org.eclipse.jdt.core"/>
-    <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
-    <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.jdt.ui.vcm/.cvsignore b/org.eclipse.jdt.ui.vcm/.cvsignore
deleted file mode 100644
index fe99505..0000000
--- a/org.eclipse.jdt.ui.vcm/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-
diff --git a/org.eclipse.jdt.ui.vcm/.project b/org.eclipse.jdt.ui.vcm/.project
deleted file mode 100644
index c59eeba..0000000
--- a/org.eclipse.jdt.ui.vcm/.project
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jdt.ui.vcm</name>
-	<comment></comment>
-	<projects>
-		<project>org.eclipse.jdt.ui</project>
-		<project>org.eclipse.ui</project>
-		<project>org.eclipse.jdt.core</project>
-		<project>org.eclipse.core.boot</project>
-		<project>org.eclipse.core.runtime</project>
-		<project>org.eclipse.core.resources</project>
-		<project>org.eclipse.swt</project>
-		<project>org.eclipse.vcm.core</project>
-		<project>org.eclipse.vcm.ui</project>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.team.cvs.core.cvsnature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.jdt.ui.vcm/.vcm_meta b/org.eclipse.jdt.ui.vcm/.vcm_meta
deleted file mode 100644
index 351bab6..0000000
--- a/org.eclipse.jdt.ui.vcm/.vcm_meta
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-description>
-	<nature id="org.eclipse.jdt.core.javanature"/>
-	<reference project-name="org.eclipse.jdt.ui"/>
-	<reference project-name="org.eclipse.ui"/>
-	<reference project-name="org.eclipse.jdt.core"/>
-	<reference project-name="org.eclipse.core.boot"/>
-	<reference project-name="org.eclipse.core.runtime"/>
-	<reference project-name="org.eclipse.core.resources"/>
-	<reference project-name="org.eclipse.swt"/>
-	<reference project-name="org.eclipse.vcm.core"/>
-	<reference project-name="org.eclipse.vcm.ui"/>
-	<builder name="org.eclipse.jdt.core.javabuilder">
-	</builder>
-</project-description>
diff --git a/org.eclipse.jdt.ui.vcm/about.html b/org.eclipse.jdt.ui.vcm/about.html
deleted file mode 100644
index 768324e..0000000
--- a/org.eclipse.jdt.ui.vcm/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect(   ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
-  <tr> 
-    <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
-  </tr>
-  <tr> 
-    <td> 
-<p>11th December, 2001</p>	
-<h3>License</h3>
-<p>Eclipse.org 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
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> &quot;CPL&quot;.  For purposes of the CPL, &quot;Program&quot; will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL &quot;Other License&quot;, any modifications, enhancements and/or
-other code and/or documentation &quot;Modifications&quot; uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License.  In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui.vcm/build.properties b/org.eclipse.jdt.ui.vcm/build.properties
deleted file mode 100644
index 836c70a..0000000
--- a/org.eclipse.jdt.ui.vcm/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = plugin.xml,\
-               about.html,\
-               plugin.properties,\
-               *.jar
-source.jdtvcm.jar = vcm/
diff --git a/org.eclipse.jdt.ui.vcm/plugin.properties b/org.eclipse.jdt.ui.vcm/plugin.properties
deleted file mode 100644
index 6bab83a..0000000
--- a/org.eclipse.jdt.ui.vcm/plugin.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-#########################################
-# (c) Copyright IBM Corp. 2000, 2001.
-# All Rights Reserved.
-#########################################
-
-pluginName=Java Development Tools VCM UI
-
-TogglePackagesViewVersionLabels.label = Show &Version Info
-TogglePackagesViewVersionLabels.tooltip = Show Version Info in the Packages View
-Managing = Team
-ManageGroupMenu.label = &Team
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui.vcm/plugin.xml.off b/org.eclipse.jdt.ui.vcm/plugin.xml.off
deleted file mode 100644
index 09d244e..0000000
--- a/org.eclipse.jdt.ui.vcm/plugin.xml.off
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- ======================================================================= -->
-<!-- This plugin provides basic VCM functionality to the Eclipse Java UI     -->
-<!-- ======================================================================= -->
-<plugin
-	name="%pluginName"
-	id = "org.eclipse.jdt.ui.vcm"
-	version = "1.0"
-	provider-name = "Object Technology International, Inc.">
-
-	<requires>
-		<import plugin="org.eclipse.core.resources"/>
-		<import plugin="org.eclipse.ui"/>
-		<import plugin="org.eclipse.vcm.core"/>
-		<import plugin="org.eclipse.vcm.ui"/>
-		<import plugin="org.eclipse.vcm.ui.cvs"/>
-		<import plugin="org.eclipse.jdt.ui"/>
-		<import plugin="org.eclipse.jdt.core"/>
-	</requires> 
-
-<runtime>
-  <library name="jdtvcm.jar">  
-     <export name = "*"/>
-  </library> 
-</runtime>
-
-<extension point="org.eclipse.vcm.core.ignore">
-	<ignore pattern = "*.class" selected = "true"/>
-</extension>
-
-<!-- **************** View Actions ******************* -->
-<extension point="org.eclipse.ui.viewActions"> 
-	<viewContribution 
-		id="org.eclipse.vcm.packageViewContribution" 
-		targetID="org.eclipse.jdt.ui.PackageExplorer"> 
-		<action id="org.eclipse.vcm.vcminfoinpkg" 
-			label="%TogglePackagesViewVersionLabels.label" 
-			menubarPath="additions" 
-			state="false"
-			tooltip="%TogglePackagesViewVersionLabels.tooltip" 
-			class="org.eclipse.jdt.ui.vcm.TogglePackageViewVersionLabels">
-		</action> 
-	</viewContribution> 
-</extension> 
-   
-</plugin>
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui.vcm/scripts/exportplugin.xml b/org.eclipse.jdt.ui.vcm/scripts/exportplugin.xml
deleted file mode 100644
index 35d3ba3..0000000
--- a/org.eclipse.jdt.ui.vcm/scripts/exportplugin.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!-- build script to create a plugin from org.eclipse.jdt.ui.vcm -->
-<project name="org.eclipse.jdt.ui.vcm" default="export" basedir="..">
-	<target name="init">
-		<tstamp/>
-		<property name="destdir" value="../../plugin-export" />
-		<property name="plugin"  value="org.eclipse.jdt.ui.vcm" />
-		<property name="dest"  value="${destdir}/${plugin}" />
-	</target>
-
-	<target name="build" depends="init">
-    	<eclipse.incrementalBuild project="${plugin}" kind="incr"/>
-	</target>
-
-	<target name="export" depends="build">
-		<mkdir dir="${destdir}" />
-		<delete dir="${dest}" />
-		<mkdir dir="${dest}" />
-		<jar 
-			jarfile="${dest}/jdtvcm.jar"
-			basedir="bin"
-		/>
-		<copy file="plugin.xml.off" todir="${dest}"/>
-		<copy file="plugin.properties" todir="${dest}"/>
-		<zip zipfile="${dest}/jdtvcmsrc.zip">
-		    <fileset dir="vcm" />
-  		</zip>				
-	</target>
-</project>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaFormattingStrategy.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaFormattingStrategy.java
index 5038213..516e274 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaFormattingStrategy.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaFormattingStrategy.java
@@ -15,7 +15,10 @@
 
 import org.eclipse.jface.text.Assert;
 import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
 import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.Position;
 import org.eclipse.jface.text.TextUtilities;
 import org.eclipse.jface.text.TypedPosition;
 import org.eclipse.jface.text.formatter.ContextBasedFormattingStrategy;
@@ -84,7 +87,19 @@
 
 		try {
 			//TODO rewrite using the edit API (CodeFormatterUtil.format2)
-			final String formatted= CodeFormatterUtil.format(CodeFormatter.K_COMPILATION_UNIT, document.get(), partition.getOffset(), partition.getLength(), indent, positions, TextUtilities.getDefaultLineDelimiter(document), preferences);
+			// reshape the partition to get around some peculiarities of the formatter
+			Position toFormat= new Position(partition.offset, partition.length);
+			stripLeadingWS(document, toFormat);
+			stripTrailingWS(document, toFormat, partition);
+			
+			IDocument formattedDoc= new Document(CodeFormatterUtil.format(CodeFormatter.K_COMPILATION_UNIT, document.get(), toFormat.offset, toFormat.length, indent, positions, TextUtilities.getDefaultLineDelimiter(document), preferences));
+			
+			int leadingEmptyLines= document.getNumberOfLines(partition.offset, toFormat.offset - partition.offset) - 1; // getNumberOfLines is one-based
+			int trailingEmptyLines= document.getNumberOfLines(toFormat.offset + toFormat.length, partition.offset + partition.length - (toFormat.offset + toFormat.length)) - 1;
+			int from= getLeadingWSOffset(leadingEmptyLines, formattedDoc);
+			int to= getTrailingWSOffset(trailingEmptyLines, formattedDoc);
+			String formatted= formattedDoc.get(from, to - from);
+			
 			final String raw= document.get(partition.getOffset(), partition.getLength());
 			if (formatted != null && !formatted.equals(raw))
 				document.replace(partition.getOffset(), partition.getLength(), formatted);
@@ -93,6 +108,103 @@
 			JavaPlugin.log(exception);
 		}
 	}
+		
+
+	/**
+	 * Strips leading white space off the region described by <code>toFormat</code>
+	 * 
+	 * @param document the doc
+	 * @param toFormat the position
+	 * @throws BadLocationException
+	 */
+	private void stripLeadingWS(final IDocument document, final Position toFormat) throws BadLocationException {
+		// get rid of leading white space:
+		// partition is an entire line selection (from start of a line)
+		// the formatter, however, expects an offset that points to the first
+		// non-ws of the line.
+		int offset= toFormat.getOffset();
+		int length= toFormat.getLength();
+		for (int i= 0; i < length; i++) {
+			if (!Character.isWhitespace(document.getChar(offset + i)))
+				break;
+			toFormat.offset++;
+			toFormat.length--;
+		}
+	}
+
+	/**
+	 * Strips any trailing white space off the region described by <code>toFormat</code>.
+	 * If the number of lines is reduced, <code>partition</code> is also trimmed off its last
+	 * (emtpy) line.
+	 * 
+	 * @param document the document to format
+	 * @param toFormat the position describing the range to be formatted
+	 * @param partition the position describing the original range
+	 * @throws BadLocationException
+	 */
+	private void stripTrailingWS(final IDocument document, Position toFormat, Position partition) throws BadLocationException {
+		// strip an empty selected line end so we don't get additional lines
+		int offset= toFormat.getOffset();
+		int length= toFormat.getLength();
+		int line= document.getLineOfOffset(offset + length);
+		for (int i= length; i > 0; i--) {
+			if (!Character.isWhitespace(document.getChar(offset + i - 1)))
+				break;
+			toFormat.length--;
+		}
+		if (document.getLineOfOffset(toFormat.length + toFormat.offset) != line) {
+			IRegion region= document.getLineInformation(line - 1);
+			int endOfLine= region.getOffset() + region.getLength();
+			partition.setLength(endOfLine - partition.offset);
+		}
+	}
+
+	/**
+	 * Returns the offset of the line in <code>document</code> that is the
+	 * <code>leadingEmptyLine</code>th empty line before any non-WS comes in
+	 * <code>document</code>.
+	 * 
+	 * @param leadingEmptyLines the number of empty lines to leave
+	 * @param document the document
+	 * @return the index such that if the document is cut up to the offset, it will have <code>leadingEmptyLines</code> empty lines upfront
+	 * @throws BadLocationException
+	 */
+	private int getLeadingWSOffset(int leadingEmptyLines, IDocument document) throws BadLocationException {
+		// discard all leading ws except leadingEmtyLines lines
+		int nLines= document.getNumberOfLines();
+		int line= 0;
+		for (; line < nLines; line++) {
+			IRegion region= document.getLineInformation(line);
+			if (document.get(region.getOffset(), region.getLength()).trim().length() != 0)
+				break;
+		}
+		int wsLine= Math.max(line - leadingEmptyLines, 0);
+		return document.getLineOffset(wsLine);
+	}
+
+	/**
+	 * Returns the offset of the end of the line in <code>document</code> that is the
+	 * <code>trailingEmptyLine</code>th empty line after the last non-WS character in
+	 * <code>document</code>.
+	 * 
+	 * @param trailingEmptyLine the number of empty lines to leave
+	 * @param document the document
+	 * @return the index such that if the document is cut from the offset, it will have <code>trailingEmptyLine</code> empty lines at the end
+	 * @throws BadLocationException
+	 */
+	private int getTrailingWSOffset(int trailingEmptyLines, IDocument document) throws BadLocationException {
+		// discard all trailing ws
+		int numberOfLines= document.getNumberOfLines();
+		int line = numberOfLines - 1;
+		for (; line >= 0; line--) {
+			IRegion region= document.getLineInformation(line);
+			if (document.get(region.getOffset(), region.getLength()).trim().length() != 0)
+				break;
+		}
+		int wsLine= Math.min(line + trailingEmptyLines, numberOfLines);
+		IRegion region= document.getLineInformation(wsLine);
+		return region.getOffset() + region.getLength();
+	}
 
 	/*
 	 * @see org.eclipse.jface.text.formatter.ContextBasedFormattingStrategy#formatterStarts(org.eclipse.jface.text.formatter.IFormattingContext)
diff --git a/org.junit/.classpath b/org.junit/.classpath
deleted file mode 100644
index e0b26de..0000000
--- a/org.junit/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry exported="true" kind="lib" path="junit.jar" sourcepath="/org.junit/junitsrc.zip"/>
-    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-    <classpathentry kind="output" path=""/>
-</classpath>
diff --git a/org.junit/.project b/org.junit/.project
deleted file mode 100644
index 29a06e7..0000000
--- a/org.junit/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.junit</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.junit/about.html b/org.junit/about.html
deleted file mode 100644
index 7cb2db3..0000000
--- a/org.junit/about.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!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>25th February, 2003</p>	
-<h3>License</h3>
-<p>Eclipse.org 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
-Common Public License Version 1.0 (&quot;CPL&quot;).  A copy of the CPL is available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.
-For purposes of the CPL, &quot;Program&quot; will mean the Content.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as follows:</p>
-
-<p><b>JUnit 3.8.1</b></p>
-
-<p>The plug-in is accompanied by software developed by JUnit.org.  The JUnit 3.8.1 code included with the plug-in includes no modifications.
-Your use of JUnit 3.8.1 in both source and binary code form contained in the plug-in is subject to the terms and conditions of the IBM Public License 1.0
-which is available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>.
-The binary code is located in junit.jar and the source code is located in src.jar.</p>
-
-<p>i) IBM 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;</p>
-
-<p>ii) IBM effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;</p>
-
-<p>iii) IBM states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL (&quot;Other License&quot;), any modifications, enhancements and/or
-other code and/or documentation (&quot;Modifications&quot;) uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License.  In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/org.junit/build.properties b/org.junit/build.properties
deleted file mode 100644
index c308cec..0000000
--- a/org.junit/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.xml,\
-               about.html,\
-               plugin.properties,\
-               junit.jar
-               
-src.includes = *.zip,about.html
-
-
diff --git a/org.junit/junit.jar b/org.junit/junit.jar
deleted file mode 100644
index 674d71e..0000000
--- a/org.junit/junit.jar
+++ /dev/null
Binary files differ
diff --git a/org.junit/junitsrc.zip b/org.junit/junitsrc.zip
deleted file mode 100644
index 8804909..0000000
--- a/org.junit/junitsrc.zip
+++ /dev/null
Binary files differ
diff --git a/org.junit/plugin.properties b/org.junit/plugin.properties
deleted file mode 100644
index 7e995ae..0000000
--- a/org.junit/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2003 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=JUnit Testing Framework
-providerName=Eclipse.org
diff --git a/org.junit/plugin.xml b/org.junit/plugin.xml
deleted file mode 100644
index 1e39fc5..0000000
--- a/org.junit/plugin.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="%pluginName"
-  id="org.junit"
-  version="3.8.1"
-  provider-name="%providerName">
-
-  <runtime>
-    <library name="junit.jar">
-      <export name="*"/>
-	  <packages prefixes="junit"/>
-    </library>
-  </runtime>
-</plugin>
diff --git a/org.junit/scripts/exportplugin.xml b/org.junit/scripts/exportplugin.xml
deleted file mode 100644
index 5574c67..0000000
--- a/org.junit/scripts/exportplugin.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-- build script to create JUnit Plugin -->
-<project name="org.junit" default="export" basedir="..">
-	<target name="init">
-		<tstamp/>
-		<property name="destdir" value="../../plugin-export" />
-		<property name="plugin"  value="org.junit" />
-		<property name="dest"  value="${destdir}/${plugin}" />
-	</target>
-
-	<target name="build" depends="init">
-    	<eclipse.incrementalBuild project="${plugin}" kind="incr"/>
-	</target>
-
-	<target name="export" depends="build">
-		<mkdir dir="${destdir}" />
-		<delete dir="${dest}" />
-		<mkdir dir="${dest}" />
-
-		<copy file="junit.jar" todir="${dest}"/>
-		<copy file="junitsrc.zip" todir="${dest}"/>
-		<copy file="plugin.xml" todir="${dest}"/>
-		<copy file="about.html" todir="${dest}"/>
-		<copy file="plugin.properties" todir="${dest}"/>
-				
-	</target>
-</project>
