diff --git a/core/org.eclipse.ptp.core.tests/.classpath b/core/org.eclipse.ptp.core.tests/.classpath
deleted file mode 100644
index 16d067f..0000000
--- a/core/org.eclipse.ptp.core.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/core/org.eclipse.ptp.core.tests/.project b/core/org.eclipse.ptp.core.tests/.project
deleted file mode 100644
index 6c8add1..0000000
--- a/core/org.eclipse.ptp.core.tests/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ptp.core.tests</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>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/core/org.eclipse.ptp.core.tests/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.ptp.core.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index d830758..0000000
--- a/core/org.eclipse.ptp.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,74 +0,0 @@
-#Sat Nov 07 12:58:41 EST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/core/org.eclipse.ptp.core.tests/META-INF/MANIFEST.MF b/core/org.eclipse.ptp.core.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index b6a89eb..0000000
--- a/core/org.eclipse.ptp.core.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ptp.core.tests;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %pluginProvider
-Require-Bundle: org.eclipse.core.runtime,
- org.junit,
- org.eclipse.ptp.core
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/core/org.eclipse.ptp.core.tests/build.properties b/core/org.eclipse.ptp.core.tests/build.properties
deleted file mode 100644
index 34d2e4d..0000000
--- a/core/org.eclipse.ptp.core.tests/build.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/core/org.eclipse.ptp.core.tests/plugin.properties b/core/org.eclipse.ptp.core.tests/plugin.properties
deleted file mode 100644
index b3cca65..0000000
--- a/core/org.eclipse.ptp.core.tests/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation 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:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=PTP Core Tests
-pluginProvider=Eclipse PTP
diff --git a/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/AttributeIndexSetTests.java b/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/AttributeIndexSetTests.java
deleted file mode 100644
index cbfdb7b..0000000
--- a/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/AttributeIndexSetTests.java
+++ /dev/null
@@ -1,402 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2010 Los Alamos National Laboratory 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:
-* 	LANL - Initial API and implementation
-*******************************************************************************/
-
-package org.eclipse.ptp.core.tests;
-
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.ptp.core.attributes.IllegalValueException;
-import org.eclipse.ptp.core.attributes.IntegerAttribute;
-import org.eclipse.ptp.core.attributes.IntegerAttributeDefinition;
-import org.eclipse.ptp.core.elements.attributes.AttributeIndexSet;
-
-
-/**
- * @author Randy M. Roberts
- *
- */
-public class AttributeIndexSetTests extends TestCase {
-	
-	private static void assertComplete(AttributeIndexSet<IntegerAttribute> indexSet) {
-		BitSet expected = indexSet.getIndexSet();
-		BitSet actual = new BitSet();
-		for (IntegerAttribute i1 : indexSet.getAttributes()) {
-			BitSet bs1 = indexSet.getIndexSet(i1);
-			actual.or(bs1);
-		}
-		assertEquals(expected, actual);
-	}
-	
-	private static void assertDisjoint(AttributeIndexSet<IntegerAttribute> indexSet) {
-		for (IntegerAttribute i1 : indexSet.getAttributes()) {
-			BitSet bs1 = indexSet.getIndexSet(i1);
-			for (IntegerAttribute i2 : indexSet.getAttributes()) {
-				if (i1.equals(i2)) {
-					continue;
-				}
-				BitSet bs2 = indexSet.getIndexSet(i2);
-				boolean intersects = bs1.intersects(bs2);
-				if (intersects) {
-					fail(bs1 + " and " + bs2 + " are not disjoint index sets");
-				}
-			}
-		}
-	}
-
-	/**
-	 * @param bitset
-	 * @param is
-	 */
-	private static void set(BitSet bitset, int[] is) {
-		for (int i : is) {
-			bitset.set(i);
-		}
-	}
-	
-	private IntegerAttributeDefinition definition;
-	
-	private AttributeIndexSet<IntegerAttribute> testingIndexSet;
-	
-	@Override
-	public void setUp() {
-		try {
-			testingIndexSet = new AttributeIndexSet<IntegerAttribute>();
-			final BitSet indices = new BitSet();
-			definition = new IntegerAttributeDefinition("xxx", "name", "description", true, -42);
-			IntegerAttribute attr;
-			
-			attr = definition.create(1);
-			indices.set(0, 5);
-			indices.set(100, 105);
-			testingIndexSet.setIndicesOfAttribute(attr, indices);
-			
-			attr = definition.create(3);
-			indices.clear();
-			indices.set(200, 205);
-			indices.set(300, 305);
-			testingIndexSet.setIndicesOfAttribute(attr, indices);
-			
-			attr = definition.create(5);
-			indices.clear();
-			set(indices, new int[]{1,101,201,301,401});
-			testingIndexSet.setIndicesOfAttribute(attr, indices);
-			
-		} catch (IllegalValueException e) {
-			fail(e.getMessage());
-		}
-	}
-	
-	@Override
-	public void tearDown() {
-		testingIndexSet = null;
-		definition = null;
-	}
-	
-	public void testAndAttrs() throws IllegalValueException {
-		IntegerAttribute attr = definition.create(1);
-		BitSet newIndices = new BitSet();
-		newIndices.set(99, 103);
-		testingIndexSet.addIndicesToAttribute(attr, newIndices);
-		
-		assertDisjoint(testingIndexSet);
-		assertComplete(testingIndexSet);
-
-		BitSet expected;
-		BitSet actual;
-
-		expected = new BitSet();
-		set(expected, new int[]{0, 1, 2, 3, 4, 99, 100, 101, 102, 103, 104, 200, 201, 202, 203, 204, 300, 301, 302, 303, 304, 401});
-		actual = testingIndexSet.getIndexSet();
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{0, 2, 3, 4, 99, 100, 101, 102, 103, 104});
-		actual = getIndexSet(testingIndexSet, 1);
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{200, 202, 203, 204, 300, 302, 303, 304});
-		actual = getIndexSet(testingIndexSet, 3);
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{1,201,301,401});
-		actual = getIndexSet(testingIndexSet, 5);
-		assertEquals(expected, actual);		
-	}
-	
-	public void testClearIndices() throws IllegalValueException {
-		BitSet clearedSet = new BitSet();
-		set(clearedSet, new int[]{2,102,202,302,402,1000});
-		testingIndexSet.clearIndices(clearedSet);
-		
-		assertDisjoint(testingIndexSet);
-		assertComplete(testingIndexSet);
-
-		BitSet expected;
-		BitSet actual;
-
-		expected = new BitSet();
-		set(expected, new int[]{0, 1, 3, 4, 100, 101, 103, 104, 200, 201, 203, 204, 300, 301, 303, 304, 401});
-		actual = testingIndexSet.getIndexSet();
-		assertEquals(expected, actual);
-		
-		expected = new BitSet();
-		set(expected, new int[]{0, 3, 4, 100, 103, 104});
-		actual = getIndexSet(testingIndexSet, 1);
-		assertEquals(expected, actual);
-		
-		expected = new BitSet();
-		set(expected, new int[]{200, 203, 204, 300, 303, 304});
-		actual = getIndexSet(testingIndexSet, 3);
-		assertEquals(expected, actual);
-		
-		expected = new BitSet();
-		set(expected, new int[]{1, 101, 201, 301, 401});
-		actual = getIndexSet(testingIndexSet, 5);
-		assertEquals(expected, actual);
-		
-		// let's do another clearAttributes
-		clearedSet.clear();
-		clearedSet.set(200, 400);
-		testingIndexSet.clearIndices(clearedSet);
-		
-		assertDisjoint(testingIndexSet);
-		assertComplete(testingIndexSet);
-
-		expected.clear();
-		set(expected, new int[]{0, 1, 3, 4, 100, 101, 103, 104, 401});
-		actual = testingIndexSet.getIndexSet();
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{0, 3, 4, 100, 103, 104});
-		actual = getIndexSet(testingIndexSet, 1);
-		assertEquals(expected, actual);
-		
-		actual = getIndexSet(testingIndexSet, 3);
-		assertTrue(actual.isEmpty());
-		
-		expected = new BitSet();
-		set(expected, new int[]{1, 101, 401});
-		actual = getIndexSet(testingIndexSet, 5);
-		assertEquals(expected, actual);
-		
-		Set<IntegerAttribute> actualAttrs = testingIndexSet.getAttributes();
-		Set<IntegerAttribute> expectedAttrs = new HashSet<IntegerAttribute>(
-				Arrays.asList(definition.create(1),	definition.create(5)));
-		assertEquals(expectedAttrs, actualAttrs);
-	}
-	
-	public void testClearIndicesForAttribute() throws IllegalValueException {
-		IntegerAttribute attr = definition.create(1);
-		BitSet clearedSet = new BitSet();
-		// 300 is not part of attr 1's set, so it shouldn't be cleared
-		set(clearedSet, new int[]{3, 4, 100, 102, 300, 1000});
-		testingIndexSet.clearIndicesForAttribute(attr, clearedSet);
-		
-		assertDisjoint(testingIndexSet);
-		assertComplete(testingIndexSet);
-
-		BitSet expected;
-		BitSet actual;
-
-		expected = new BitSet();
-		// notice 300 is still here
-		set(expected, new int[]{0, 1, 2, 101, 103, 104, 200, 201, 202, 203, 204, 300, 301, 302, 303, 304, 401});
-		actual = testingIndexSet.getIndexSet();
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{0, 2, 103, 104});
-		actual = getIndexSet(testingIndexSet, 1);
-		assertEquals(expected, actual);
-
-		actual = getIndexSet(testingIndexSet, 2);
-		assertTrue(actual.isEmpty());
-
-		expected = new BitSet();
-		// notice 300 is still here
-		set(expected, new int[]{200, 202, 203, 204, 300, 302, 303, 304});
-		actual = getIndexSet(testingIndexSet, 3);
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{1,101,201,301,401});
-		actual = getIndexSet(testingIndexSet, 5);
-		assertEquals(expected, actual);		
-	}
-	
-	public void testGetAttributes() throws IllegalValueException {
-		Set<IntegerAttribute> expected = new HashSet<IntegerAttribute>();
-		expected.add(definition.create(1));
-		expected.add(definition.create(3));
-		expected.add(definition.create(5));
-		Set<IntegerAttribute> actual = testingIndexSet.getAttributes();
-		assertEquals(expected, actual);
-	}
-	
-	public void testGetAtttribute() throws IllegalValueException {
-		IntegerAttribute ia;
-		ia = testingIndexSet.getAttribute(1);		
-		assertEquals(definition.create(5), ia);
-		
-		ia = testingIndexSet.getAttribute(2);		
-		assertEquals(definition.create(1), ia);
-		
-		ia = testingIndexSet.getAttribute(500);		
-		assertNull(ia);
-	}
-
-	public void testSetAttrsSubset() throws IllegalValueException {
-		IntegerAttribute attr = definition.create(1);
-		BitSet newIndices = new BitSet();
-		newIndices.set(101, 103);
-		testingIndexSet.setIndicesOfAttribute(attr, newIndices);
-		
-		assertDisjoint(testingIndexSet);
-		assertComplete(testingIndexSet);
-
-		BitSet expected;
-		BitSet actual;
-
-		expected = new BitSet();
-		set(expected, new int[]{1, 101, 102, 200, 201, 202, 203, 204, 300, 301, 302, 303, 304, 401});
-		actual = testingIndexSet.getIndexSet();
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{101, 102});
-		actual = getIndexSet(testingIndexSet, 1);
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{200, 202, 203, 204, 300, 302, 303, 304});
-		actual = getIndexSet(testingIndexSet, 3);
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{1,201,301,401});
-		actual = getIndexSet(testingIndexSet, 5);
-		assertEquals(expected, actual);		
-	}
-
-	public void testSubset() throws IllegalValueException {
-		final BitSet expected = new BitSet();
-		BitSet actual;
-
-		BitSet subSet = new BitSet();
-		subSet.set(3, 5);
-		subSet.set(103, 201);
-		AttributeIndexSet<IntegerAttribute> results = testingIndexSet.getSubset(subSet);
-
-		assertDisjoint(results);
-		assertComplete(results);
-
-		set(expected, new int[]{3,4,103,104,200});
-		actual = results.getIndexSet();
-		assertEquals(expected, actual);
-
-		expected.clear();
-		set(expected, new int[]{3,4,103,104});
-		actual = getIndexSet(results, 1);
-		assertEquals(expected, actual);
-
-		expected.clear();
-		set(expected, new int[]{200});
-		actual = getIndexSet(results, 3);
-		assertEquals(expected, actual);
-
-		actual = getIndexSet(results, 5);
-		assertTrue(actual.isEmpty());
-	}
-
-	public void testTotalClearAttribute() throws IllegalValueException {
-		IntegerAttribute attr = definition.create(1);
-		testingIndexSet.clearAttribute(attr);
-		
-		assertDisjoint(testingIndexSet);
-		assertComplete(testingIndexSet);
-
-		BitSet expected;
-		BitSet actual;
-
-		expected = new BitSet();
-		set(expected, new int[]{1, 101, 200, 201, 202, 203, 204, 300, 301, 302, 303, 304, 401});
-		actual = testingIndexSet.getIndexSet();
-		assertEquals(expected, actual);
-
-		actual = getIndexSet(testingIndexSet, 1);
-		assertTrue(actual.isEmpty());
-
-		expected = new BitSet();
-		set(expected, new int[]{200, 202, 203, 204, 300, 302, 303, 304});
-		actual = getIndexSet(testingIndexSet, 3);
-		assertEquals(expected, actual);
-
-		expected = new BitSet();
-		set(expected, new int[]{1,101,201,301,401});
-		actual = getIndexSet(testingIndexSet, 5);
-		assertEquals(expected, actual);		
-	}
-
-	public void testValIndexSetupByAttr1() throws IllegalValueException {
-		BitSet expected = new BitSet();
-		set(expected, new int[]{0, 2, 3, 4, 100, 102, 103, 104});
-		
-		BitSet actual = getIndexSet(testingIndexSet, 1);
-		assertEquals(expected, actual);
-	}
-	
-	public void testValIndexSetupByAttr2() throws IllegalValueException {
-		BitSet actual = getIndexSet(testingIndexSet, 2);
-		assertTrue(actual.isEmpty());
-	}
-	
-	public void testValIndexSetupByAttr3() throws IllegalValueException {
-		BitSet expected = new BitSet();
-		set(expected, new int[]{200, 202, 203, 204, 300, 302, 303, 304});
-		
-		BitSet actual = getIndexSet(testingIndexSet, 3);
-		assertEquals(expected, actual);
-	}
-
-	public void testValIndexSetupByAttr5() throws IllegalValueException {
-		BitSet expected = new BitSet();
-		set(expected, new int[]{1,101,201,301,401});
-		
-		BitSet actual = getIndexSet(testingIndexSet, 5);
-		assertEquals(expected, actual);
-	}
-
-	public void testValIndexSetupIsComplete() {
-		assertComplete(testingIndexSet);
-	}
-
-	public void testValIndexSetupIsDisjoint() {
-		assertDisjoint(testingIndexSet);
-	}
-	
-	public void testValIndexSetupTotalBitSet() {
-		BitSet expected = new BitSet();
-		set(expected, new int[]{0, 1, 2, 3, 4, 100, 101, 102, 103, 104, 200, 201, 202, 203, 204, 300, 301, 302, 303, 304, 401});
-		assertEquals(expected, testingIndexSet.getIndexSet());
-	}
-	
-	private BitSet getIndexSet(AttributeIndexSet<IntegerAttribute> indexSet, int value) throws IllegalValueException {
-		return indexSet.getIndexSet(definition.create(value));
-	}
-}
diff --git a/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/RangeSetTests.java b/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/RangeSetTests.java
deleted file mode 100644
index 0ba5cd0..0000000
--- a/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/RangeSetTests.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation 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:
- * 	IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ptp.core.tests;
-
-import junit.framework.TestCase;
-
-public class RangeSetTests extends TestCase {
-	
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	@Override
-	protected void setUp() throws Exception {
-		
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	@Override
-	protected void tearDown() throws Exception {
-		
-	}
-	
-}
diff --git a/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/suite/CoreTestSuite.java b/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/suite/CoreTestSuite.java
deleted file mode 100644
index 0a285a9..0000000
--- a/core/org.eclipse.ptp.core.tests/src/org/eclipse/ptp/core/tests/suite/CoreTestSuite.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation 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:
- * 	IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ptp.core.tests.suite;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.ptp.core.tests.AttributeIndexSetTests;
-import org.eclipse.ptp.core.tests.RangeSetTests;
-
-public class CoreTestSuite {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(CoreTestSuite.class.getName());
-		
-		suite.addTestSuite(RangeSetTests.class);
-		suite.addTestSuite(AttributeIndexSetTests.class);
-		return suite;
-	}
-
-}
diff --git a/core/org.eclipse.ptp.remote.core.tests/.classpath b/core/org.eclipse.ptp.remote.core.tests/.classpath
deleted file mode 100644
index 64c5e31..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/core/org.eclipse.ptp.remote.core.tests/.project b/core/org.eclipse.ptp.remote.core.tests/.project
deleted file mode 100644
index 9f0f2fe..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ptp.remote.core.tests</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>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/core/org.eclipse.ptp.remote.core.tests/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.ptp.remote.core.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index d830758..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,74 +0,0 @@
-#Sat Nov 07 12:58:41 EST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/core/org.eclipse.ptp.remote.core.tests/META-INF/MANIFEST.MF b/core/org.eclipse.ptp.remote.core.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 53747a1..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ptp.remote.core.tests;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %pluginProvider
-Require-Bundle: org.eclipse.core.runtime,
- org.junit,
- org.eclipse.ptp.remote.core;bundle-version="3.0.0",
- org.eclipse.ptp.remote.ui;bundle-version="3.0.0",
- com.jcraft.jsch;bundle-version="0.1.41",
- org.eclipse.core.filesystem;bundle-version="1.2.0",
- org.eclipse.ptp.remotetools.core;bundle-version="2.1.9",
- org.eclipse.ptp.remote.remotetools.core;bundle-version="3.0.0",
- org.eclipse.ptp.remotetools.environment.core;bundle-version="1.3.3"
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/core/org.eclipse.ptp.remote.core.tests/build.properties b/core/org.eclipse.ptp.remote.core.tests/build.properties
deleted file mode 100644
index 34d2e4d..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/build.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/core/org.eclipse.ptp.remote.core.tests/plugin.properties b/core/org.eclipse.ptp.remote.core.tests/plugin.properties
deleted file mode 100755
index c8959a9..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation 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:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=PTP Remote Core Tests
-pluginProvider=Eclipse PTP
diff --git a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/FileStoreTests.java b/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/FileStoreTests.java
deleted file mode 100644
index 3e1a5eb..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/FileStoreTests.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package org.eclipse.ptp.core.tests;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ptp.remote.core.IRemoteConnection;
-import org.eclipse.ptp.remote.core.IRemoteConnectionManager;
-import org.eclipse.ptp.remote.core.IRemoteFileManager;
-import org.eclipse.ptp.remote.core.IRemoteServices;
-import org.eclipse.ptp.remote.core.PTPRemoteCorePlugin;
-import org.eclipse.ptp.remote.core.exception.RemoteConnectionException;
-
-public class FileStoreTests extends TestCase {
-	private static final String CONNECTION_NAME = "test_connection";
-	private static final String USERNAME = "user";
-	private static final String PASSWORD = "password";
-	private static final String HOST = "localhost";
-	private static final String PATH1 = "/home/user/sftp_test";
-	private static final String PATH2 = PATH1 + "/.file1";
-	private static final String TEST_STRING = "a string containing fairly *()(*&^$%## random text";
-
-	private IRemoteServices fRemoteServices;
-	private IRemoteConnection fRemoteConnection;
-	private IRemoteFileManager fRemoteFileManager;
-	
-	public void testFileStore() {
-		URI	path1Uri = fRemoteFileManager.toURI(PATH1);
-		URI	path2Uri = fRemoteFileManager.toURI(PATH2);
-		assertNotNull(path1Uri);
-		assertNotNull(path2Uri);
-		
-		IFileStore store1 = null;
-		IFileStore store2 = null;
-		
-		try {
-			store1 = EFS.getStore(path1Uri);
-			store2 = EFS.getStore(path2Uri);
-		} catch (Exception e) {
-			fail(e.getLocalizedMessage());
-		}
-		
-		for (int i = 0; i < 5; i++) {
-			assertFalse(store1.fetchInfo().exists());
-			try {
-				store1.mkdir(EFS.NONE, null);
-			} catch (CoreException e) {
-				e.getLocalizedMessage();
-			}
-			assertTrue(store1.fetchInfo().exists());
-			
-			assertFalse(store2.fetchInfo().exists());
-			try {
-				OutputStream stream = store2.openOutputStream(EFS.NONE, null);
-				assertNotNull(stream);
-				BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(stream));
-				buf.write(TEST_STRING);
-				buf.close();
-			} catch (Exception e) {
-				e.getLocalizedMessage();
-			}
-			assertTrue(store2.fetchInfo().exists());
-			
-			try {
-				InputStream stream = store2.openInputStream(EFS.NONE, null);
-				assertNotNull(stream);
-				BufferedReader buf = new BufferedReader(new InputStreamReader(stream));
-				String line = buf.readLine().trim();
-				assertTrue(line.equals(TEST_STRING));
-				buf.close();
-			} catch (Exception e) {
-				e.getLocalizedMessage();
-			}
-	
-			try {
-				store2.delete(EFS.NONE, null);
-			} catch (CoreException e) {
-				e.getLocalizedMessage();
-			}
-			assertFalse(store2.fetchInfo().exists());
-	
-			try {
-				store1.delete(EFS.NONE, null);
-			} catch (CoreException e) {
-				e.getLocalizedMessage();
-			}
-			assertFalse(store1.fetchInfo().exists());
-		}
-
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	@Override
-	protected void setUp() throws Exception {
-		fRemoteServices = PTPRemoteCorePlugin.getDefault().getRemoteServices("org.eclipse.ptp.remote.RemoteTools");
-		assertNotNull(fRemoteServices);
-		
-		IRemoteConnectionManager connMgr = fRemoteServices.getConnectionManager();
-		assertNotNull(connMgr);
-		
-		Map<String, String> map = new HashMap<String, String>();
-		map.put("ptp.localhost-selection", "false");
-		map.put("ptp.login-username", USERNAME);
-		map.put("ptp.login-password", PASSWORD);
-		map.put("ptp.connection-address", HOST);
-		map.put("ptp.connection-port", "22");
-		map.put("ptp.key-path", "");
-		map.put("ptp.key-passphrase", "");
-		map.put("ptp.is-passwd-auth", "true");
-		map.put("ptp.connection-timeout", "5");
-		map.put("ptp.cipher-type", "default");
-		
-		try {
-			fRemoteConnection = connMgr.newConnection(CONNECTION_NAME, map);
-		} catch (RemoteConnectionException e) {
-			fail(e.getLocalizedMessage());
-		}
-		assertNotNull(fRemoteConnection);
-		
-		fRemoteFileManager = fRemoteServices.getFileManager(fRemoteConnection);
-		assertNotNull(fRemoteFileManager);
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	@Override
-	protected void tearDown() throws Exception {
-		fRemoteConnection.close();
-		IRemoteConnectionManager connMgr = fRemoteServices.getConnectionManager();
-		assertNotNull(connMgr);
-		connMgr.removeConnection(fRemoteConnection);
-	}
-	
-}
diff --git a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteConnectionTests.java b/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteConnectionTests.java
deleted file mode 100644
index 4d116d0..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteConnectionTests.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.eclipse.ptp.core.tests;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileInfo;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.filesystem.IFileSystem;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.ptp.remote.core.IRemoteConnection;
-import org.eclipse.ptp.remote.core.IRemoteConnectionManager;
-import org.eclipse.ptp.remote.core.IRemoteFileManager;
-import org.eclipse.ptp.remote.core.IRemoteProcess;
-import org.eclipse.ptp.remote.core.IRemoteProcessBuilder;
-import org.eclipse.ptp.remote.core.IRemoteServices;
-import org.eclipse.ptp.remote.core.PTPRemoteCorePlugin;
-import org.eclipse.ptp.remote.core.exception.RemoteConnectionException;
-
-public class RemoteConnectionTests extends TestCase {
-	private static final String USERNAME = "user"; //$NON-NLS-1$
-	private static final String PASSWORD = "password"; //$NON-NLS-1$
-	private static final String HOST = "localhost"; //$NON-NLS-1$
-	
-	private IRemoteServices fRemoteServices;
-	private IRemoteConnection fRemoteConnection;
-	
-	public void testEnv() {
-		String var = fRemoteConnection.getEnv("SHELL"); //$NON-NLS-1$
-		assertNotNull(var);
-		
-		var = fRemoteConnection.getEnv("FOO_VAR_SHOULD_NOT_BE_DEFINED"); //$NON-NLS-1$
-		assertNull(var);
-		
-		assertNotNull(fRemoteConnection.getProperty("os.name")); //$NON-NLS-1$
-		assertNotNull(fRemoteConnection.getProperty("os.arch")); //$NON-NLS-1$
-		assertNotNull(fRemoteConnection.getProperty("os.version")); //$NON-NLS-1$
-		assertNotNull(fRemoteConnection.getProperty("file.separator")); //$NON-NLS-1$
-		assertNotNull(fRemoteConnection.getProperty("path.separator")); //$NON-NLS-1$
-		assertNotNull(fRemoteConnection.getProperty("line.separator")); //$NON-NLS-1$
-		
-		IRemoteProcessBuilder builder = fRemoteServices.getProcessBuilder(fRemoteConnection, "env"); //$NON-NLS-1$
-		builder.environment().put("FOO", "BAR"); //$NON-NLS-1$ //$NON-NLS-2$
-		builder.environment().put("USER", "FOO"); //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-			IRemoteProcess proc = builder.start();
-			BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
-			String line;
-			while ((line = stdout.readLine()) != null) {
-				String[] kv = line.trim().split("="); //$NON-NLS-1$
-				if (kv.length == 2) {
-					if (kv[0].equals("FOO")) assertTrue(kv[1].equals("BAR")); //$NON-NLS-1$ //$NON-NLS-2$
-					if (kv[0].equals("USER")) assertTrue(kv[1].equals("FOO")); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-		} catch (IOException e) {
-			fail(e.getLocalizedMessage());
-		}
-	}
-	
-	public void testCopy() {
-		final IRemoteFileManager fileManager = fRemoteServices.getFileManager(fRemoteConnection);
-
-		final IFileSystem fileSystem = EFS.getLocalFileSystem();
-		final IFileStore srcFileStore = fileSystem.getStore(new Path("/tmp/log_src.txt"));
-		final IFileStore dstFileStore = fileManager.getResource("/tmp").getChild("log_dst.txt");
-		try {
-			srcFileStore.delete(EFS.NONE, new NullProgressMonitor());
-			dstFileStore.delete(EFS.NONE, new NullProgressMonitor());
-			OutputStream stream = srcFileStore.openOutputStream(EFS.NONE, new NullProgressMonitor());
-			stream.write(new byte[]{'f', 'o', 'o', '\n'});
-			stream.close();
-			srcFileStore.copy(dstFileStore, EFS.NONE, new NullProgressMonitor());
-		} catch (CoreException e) {
-			fail(e.getLocalizedMessage());
-		} catch (IOException e) {
-			fail(e.getLocalizedMessage());
-		}
-		IFileInfo srcInfo = srcFileStore.fetchInfo();
-		IFileInfo dstInfo = dstFileStore.fetchInfo();
-		assertTrue(dstInfo.exists());
-		assertTrue(srcInfo.getLength() == dstInfo.getLength());
-		try {
-			InputStream stream = dstFileStore.openInputStream(EFS.NONE, new NullProgressMonitor());
-			byte[] b = new byte[4];
-			stream.read(b);
-			stream.close();
-			assertTrue(b[0] == 'f');
-			assertTrue(b[1] == 'o');
-			assertTrue(b[2] == 'o');
-			assertTrue(b[3] == '\n');
-		} catch (CoreException e) {
-			fail(e.getLocalizedMessage());
-		} catch (IOException e) {
-			fail(e.getLocalizedMessage());
-		}
-		
-//		try {
-//			srcFileStore.delete(EFS.NONE, new NullProgressMonitor());
-//			dstFileStore.delete(EFS.NONE, new NullProgressMonitor());
-//		} catch (CoreException e) {
-//			fail();
-//		}
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	@Override
-	protected void setUp() throws Exception {
-		fRemoteServices = PTPRemoteCorePlugin.getDefault().getRemoteServices("org.eclipse.ptp.remote.RemoteTools"); //$NON-NLS-1$
-		assertNotNull(fRemoteServices);
-		
-		IRemoteConnectionManager connMgr = fRemoteServices.getConnectionManager();
-		assertNotNull(connMgr);
-		
-		Map<String, String> map = new HashMap<String, String>();
-		map.put("ptp.localhost-selection", "false"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.login-username", USERNAME); //$NON-NLS-1$
-		map.put("ptp.login-password", PASSWORD); //$NON-NLS-1$
-		map.put("ptp.connection-address", HOST); //$NON-NLS-1$
-		map.put("ptp.connection-port", "22"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.key-path", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.key-passphrase", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.is-passwd-auth", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.connection-timeout", "5"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.cipher-type", "default"); //$NON-NLS-1$ //$NON-NLS-2$
-		
-		try {
-			fRemoteConnection = connMgr.newConnection("test_connection", map); //$NON-NLS-1$
-		} catch (RemoteConnectionException e) {
-			fail(e.getLocalizedMessage());
-		}
-		assertNotNull(fRemoteConnection);
-		
-		try {
-			fRemoteConnection.open(new NullProgressMonitor());
-		} catch (RemoteConnectionException e) {
-			fail(e.getLocalizedMessage());
-		}
-		assertTrue(fRemoteConnection.isOpen());
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	@Override
-	protected void tearDown() throws Exception {
-		fRemoteConnection.close();
-		IRemoteConnectionManager connMgr = fRemoteServices.getConnectionManager();
-		assertNotNull(connMgr);
-		connMgr.removeConnection(fRemoteConnection);
-	}
-	
-}
diff --git a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteToolsTests.java b/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteToolsTests.java
deleted file mode 100644
index ad393fa..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteToolsTests.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package org.eclipse.ptp.core.tests;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.ptp.remote.remotetools.core.RemoteToolsServices;
-import org.eclipse.ptp.remote.remotetools.core.environment.PTPTargetControl;
-import org.eclipse.ptp.remotetools.core.IRemoteExecutionManager;
-import org.eclipse.ptp.remotetools.core.IRemoteExecutionTools;
-import org.eclipse.ptp.remotetools.core.IRemoteScript;
-import org.eclipse.ptp.remotetools.core.RemoteProcess;
-import org.eclipse.ptp.remotetools.environment.EnvironmentPlugin;
-import org.eclipse.ptp.remotetools.environment.core.TargetElement;
-import org.eclipse.ptp.remotetools.environment.core.TargetTypeElement;
-import org.eclipse.ptp.remotetools.exception.CancelException;
-import org.eclipse.ptp.remotetools.exception.RemoteConnectionException;
-import org.eclipse.ptp.remotetools.exception.RemoteExecutionException;
-
-public class RemoteToolsTests extends TestCase {
-	private static final String USERNAME = "user"; //$NON-NLS-1$
-	private static final String PASSWORD = "password"; //$NON-NLS-1$
-	private static final String HOST = "localhost"; //$NON-NLS-1$
-	
-	private PTPTargetControl fTargetControl;
-	private IRemoteExecutionManager fExecutionManager;
-	private IRemoteExecutionTools fExecutionTools;
-	private TargetTypeElement fTarget;
-	private TargetElement fElement;
-	
-	public void testCopy() {
-		for (int i = 0; i < 50; i++) {
-			IRemoteScript script = fExecutionTools.createScript();
-			script.setScript("echo hi there");
-			RemoteProcess p = null;
-			try {
-				p = fExecutionTools.executeProcess(script);
-			} catch (RemoteExecutionException e) {
-				fail();
-			} catch (RemoteConnectionException e) {
-				fail();
-			} catch (CancelException e) {
-				fail();
-			}
-			assertNotNull(p);
-			BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
-			try {
-				String line;
-				while ((line = br.readLine()) != null) {
-					System.out.println("read \""+line+"\"");
-					assertTrue(line.startsWith("hi there"));
-				}
-			} catch (IOException e) {
-				fail();
-			}
-//			try {
-//				p.waitFor();
-//			} catch (InterruptedException e) {
-//			}
-		}
-		
-//		IRemoteScript script = fExecutionTools.createScript();
-//		script.setScript("cat > /tmp/xxx.script");
-//		RemoteProcess p = null;
-//		try {
-//			p = fExecutionTools.executeProcess(script);
-//		} catch (RemoteExecutionException e) {
-//			fail();
-//		} catch (RemoteConnectionException e) {
-//			fail();
-//		} catch (CancelException e) {
-//			fail();
-//		}
-//		assertNotNull(p);
-//		BufferedWriter b = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
-//		try {
-//			b.write("this is a test\n");
-//			b.write("this is a test2\n");
-//			b.close();
-//		} catch (IOException e) {
-//			fail();
-//		}
-//		try {
-//			p.waitFor();
-//		} catch (InterruptedException e) {
-//		}
-//	
-//		script = fExecutionTools.createScript();
-//		script.setScript("cat >> /tmp/xxx.script");
-//		p = null;
-//		try {
-//			p = fExecutionTools.executeProcess(script);
-//		} catch (RemoteExecutionException e) {
-//			fail();
-//		} catch (RemoteConnectionException e) {
-//			fail();
-//		} catch (CancelException e) {
-//			fail();
-//		}
-//		assertNotNull(p);
-//		b = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
-//		try {
-//			b.write("this is a test4\n");
-//			b.write("this is a test5\n");
-//			b.close();
-//		} catch (IOException e) {
-//			fail();
-//		}
-//		try {
-//			p.waitFor();
-//		} catch (InterruptedException e) {
-//		}
-//		
-//		script = fExecutionTools.createScript();
-//		script.setScript("cat < /tmp/xxx.script");
-//		p = null;
-//		try {
-//			p = fExecutionTools.executeProcess(script);
-//		} catch (RemoteExecutionException e) {
-//			fail();
-//		} catch (RemoteConnectionException e) {
-//			fail();
-//		} catch (CancelException e) {
-//			fail();
-//		}
-//		assertNotNull(p);
-//		BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
-//		try {
-//			String line;
-//			while ((line = br.readLine()) != null) {
-//				System.out.println("read \""+line+"\"");
-//			}
-//		} catch (IOException e) {
-//			fail();
-//		}
-//		try {
-//			p.waitFor();
-//		} catch (InterruptedException e) {
-//		}
-
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	@Override
-	protected void setUp() throws Exception {
-		Map<String, String> map = new HashMap<String, String>();
-		map.put("ptp.localhost-selection", "false"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.login-username", USERNAME); //$NON-NLS-1$
-		map.put("ptp.login-password", PASSWORD); //$NON-NLS-1$
-		map.put("ptp.connection-address", HOST); //$NON-NLS-1$
-		map.put("ptp.connection-port", "22"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.key-path", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.key-passphrase", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.is-passwd-auth", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.connection-timeout", "5"); //$NON-NLS-1$ //$NON-NLS-2$
-		map.put("ptp.cipher-type", "default"); //$NON-NLS-1$ //$NON-NLS-2$
-		
-		fTarget = RemoteToolsServices.getTargetTypeElement();
-		String id = EnvironmentPlugin.getDefault().getEnvironmentUniqueID();
-		TargetElement element = new TargetElement(fTarget, HOST, map, id);
-		fTarget.addElement(element);
-		fTargetControl = (PTPTargetControl)element.getControl();
-		fTargetControl.create(new NullProgressMonitor());
-		fExecutionManager = fTargetControl.createExecutionManager();
-		fExecutionTools = fExecutionManager.getExecutionTools();
-		assertNotNull(fExecutionTools);
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	@Override
-	protected void tearDown() throws Exception {
-		fExecutionManager.close();
-		fTarget.removeElement(fElement);
-	}
-	
-}
diff --git a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/SFTPTests.java b/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/SFTPTests.java
deleted file mode 100644
index 07e04f7..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/SFTPTests.java
+++ /dev/null
@@ -1,191 +0,0 @@
-package org.eclipse.ptp.core.tests;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-
-import junit.framework.TestCase;
-
-import com.jcraft.jsch.ChannelSftp;
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.Session;
-import com.jcraft.jsch.SftpATTRS;
-import com.jcraft.jsch.SftpException;
-import com.jcraft.jsch.UIKeyboardInteractive;
-import com.jcraft.jsch.UserInfo;
-
-public class SFTPTests extends TestCase {
-	private static final String USERNAME = "user"; //$NON-NLS-1$
-	private static final String PASSWORD = "password"; //$NON-NLS-1$
-	private static final String HOST = "localhost"; //$NON-NLS-1$
-	private static final String PATH1 = "/home/user/sftp_test"; //$NON-NLS-1$
-	private static final String PATH2 = PATH1 + "/.file1"; //$NON-NLS-1$
-	private static final String TEST_STRING = "a string containing fairly *()(*&^$%## random text"; //$NON-NLS-1$
-	
-	
-	private class SSHUserInfo implements UserInfo, UIKeyboardInteractive {
-		private SSHUserInfo() { }
-
-		public String getPassword() {
-			return PASSWORD;
-		}
-		
-		public void setPassword(String password) {
-		}
-
-		public boolean promptYesNo(String str) {
-			return true;
-		}
-
-		public String getPassphrase() {
-			return "";
-		}
-		
-		public void setPassphrase(String passphrase) {
-		}
-
-		public boolean promptPassphrase(String message) {
-			return false;
-		}
-
-		public boolean promptPassword(String message) {
-			return true;
-		}
-		
-		public void setUsePassword(boolean usePassword) {
-		}
-
-		public void showMessage(String message) {
-		}
-
-		public String[] promptKeyboardInteractive(final String destination,
-				final String name, final String instruction,
-				final String[] prompt, final boolean[] echo) {
-			if (prompt.length != 1
-					|| echo[0] != false) {
-				return null;
-			}
-			String[] response = new String[1];
-			response[0] = PASSWORD;
-			return response;
-		}
-	}
-	
-	private JSch jsch;
-	private Session session;
-	private ChannelSftp sftp;
-	
-	public void testSftp() {
-		for (int i = 0; i < 5; i++) {
-			System.out.print("starting test... ");
-			
-			// stat
-			SftpATTRS attrs = null;
-			try {
-				attrs = sftp.stat(PATH1);
-			} catch (SftpException e) {
-				assertTrue(e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE);
-			} catch (Exception e) {
-				fail(e.getLocalizedMessage());
-			}
-			assertNull(attrs);
-			
-			// mkdir
-			
-			try {
-				sftp.mkdir(PATH1);
-			} catch (Exception e) {
-				fail(e.getLocalizedMessage());
-			}
-			attrs = null;
-			try {
-				attrs = sftp.stat(PATH1);
-			} catch (Exception e) {
-				fail(e.getLocalizedMessage());
-			}
-			assertNotNull(attrs);
-			assertTrue(attrs.isDir());
-			
-			// test write
-			attrs = null;
-			try {
-				attrs = sftp.stat(PATH2);
-			} catch (SftpException e) {
-				assertTrue(e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE);
-			} catch (Exception e) {
-				fail(e.getLocalizedMessage());
-			}
-			assertNull(attrs);
-			
-			try {
-				OutputStream stream = sftp.put(PATH2);
-				assertNotNull(stream);
-				BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(stream));
-				buf.write(TEST_STRING);
-				buf.close();
-			} catch (Exception e) {
-				fail(e.getLocalizedMessage());
-			}
-			
-			attrs = null;
-			try {
-				attrs = sftp.stat(PATH2);
-			} catch (Exception e) {
-				fail(e.getLocalizedMessage());
-			}
-			assertNotNull(attrs);
-	
-			// read
-			try {
-				InputStream stream = sftp.get(PATH2);
-				assertNotNull(stream);
-				BufferedReader buf = new BufferedReader(new InputStreamReader(stream));
-				String line = buf.readLine().trim();
-				assertTrue(line.equals(TEST_STRING));
-				buf.close();
-			} catch (Exception e) {
-				fail(e.getLocalizedMessage());
-			}
-			
-			try {
-				sftp.rm(PATH2);
-			} catch (SftpException e) {
-				fail(e.getLocalizedMessage());
-			}
-			
-			try {
-				sftp.rmdir(PATH1);
-			} catch (SftpException e) {
-				fail(e.getLocalizedMessage());
-			}
-			
-			System.out.println("completed");
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	@Override
-	protected void setUp() throws Exception {
-		jsch = new JSch();
-		session = jsch.getSession(USERNAME, HOST);
-		session.setUserInfo(new SSHUserInfo());
-		session.connect();
-		sftp = (ChannelSftp) session.openChannel("sftp");
-		sftp.connect();
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	@Override
-	protected void tearDown() throws Exception {
-		sftp.disconnect();
-		session.disconnect();
-	}
-	
-}
diff --git a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/remote/core/tests/suite/RemoteCoreTestSuite.java b/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/remote/core/tests/suite/RemoteCoreTestSuite.java
deleted file mode 100644
index ba33661..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/remote/core/tests/suite/RemoteCoreTestSuite.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.eclipse.ptp.remote.core.tests.suite;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.ptp.core.tests.FileStoreTests;
-import org.eclipse.ptp.core.tests.RemoteConnectionTests;
-import org.eclipse.ptp.core.tests.SFTPTests;
-
-public class RemoteCoreTestSuite {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(RemoteCoreTestSuite.class.getName());
-		
-		suite.addTestSuite(FileStoreTests.class);
-		suite.addTestSuite(RemoteConnectionTests.class);
-		suite.addTestSuite(SFTPTests.class);
-		return suite;
-	}
-
-}
diff --git a/core/org.eclipse.ptp.utils.core.tests/.classpath b/core/org.eclipse.ptp.utils.core.tests/.classpath
deleted file mode 100644
index 64c5e31..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/core/org.eclipse.ptp.utils.core.tests/.project b/core/org.eclipse.ptp.utils.core.tests/.project
deleted file mode 100644
index 8a5e69f..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ptp.utils.core.tests</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>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/core/org.eclipse.ptp.utils.core.tests/.settings/org.eclipse.jdt.core.prefs b/core/org.eclipse.ptp.utils.core.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index d830758..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,74 +0,0 @@
-#Sat Nov 07 12:58:41 EST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/core/org.eclipse.ptp.utils.core.tests/META-INF/MANIFEST.MF b/core/org.eclipse.ptp.utils.core.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index fea9f4d..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ptp.utils.core.tests;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %pluginProvider
-Require-Bundle: org.eclipse.core.runtime,
- org.junit,
- org.eclipse.ptp.utils.core;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/core/org.eclipse.ptp.utils.core.tests/build.properties b/core/org.eclipse.ptp.utils.core.tests/build.properties
deleted file mode 100644
index 34d2e4d..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/build.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/core/org.eclipse.ptp.utils.core.tests/plugin.properties b/core/org.eclipse.ptp.utils.core.tests/plugin.properties
deleted file mode 100644
index c8959a9..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 IBM Corporation 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:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=PTP Remote Core Tests
-pluginProvider=Eclipse PTP
diff --git a/core/org.eclipse.ptp.utils.core.tests/src/org/eclipse/ptp/utils/core/tests/ArgumentParserTests.java b/core/org.eclipse.ptp.utils.core.tests/src/org/eclipse/ptp/utils/core/tests/ArgumentParserTests.java
deleted file mode 100644
index 188def4..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/src/org/eclipse/ptp/utils/core/tests/ArgumentParserTests.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/package org.eclipse.ptp.utils.core.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.ptp.utils.core.ArgumentParser;
-
-public class ArgumentParserTests extends TestCase {
-	
-	public void testFileStore() {
-		ArgumentParser parser = new ArgumentParser("foobar", new String[] {"arg1", "arg2", "arg\\3", "arg\"4", "arg'5", "more arguments"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
-		assertEquals("foobar arg1 arg2 arg\\3 arg\"4 arg'5 more\\ arguments", parser.getCommandLine(false));
-		assertEquals("foobar arg1 arg2 arg\\\\3 arg\\\"4 arg\\'5 more\\ arguments", parser.getCommandLine(true));
-		
-		parser = new ArgumentParser(" foo");
-		assertEquals("foo", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo ");
-		assertEquals("foo", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo");
-		assertEquals("foo", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo  a");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a ");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser(" foo a");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser(" foo a ");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser(" foo   a ");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo	a");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a	");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo	a	");
-		assertEquals("foo a", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a b");
-		assertEquals("foo a b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a b ");
-		assertEquals("foo a b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a b c ");
-		assertEquals("foo a b c", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo\\ a b");
-		assertEquals("foo\\ a b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo \\ab");
-		assertEquals("foo ab", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a\\ b\\ c ");
-		assertEquals("foo a\\ b\\ c", parser.getCommandLine(true));
-		parser = new ArgumentParser("\\foo a b c ");
-		assertEquals("foo a b c", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a b c\\");
-		assertEquals("foo a b c", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \\b c");
-		assertEquals("foo a b c", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a\\'c b");
-		assertEquals("foo a\\'c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a\\\"c b");
-		assertEquals("foo a\\\"c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \\'c b");
-		assertEquals("foo a \\'c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \\\"c b");
-		assertEquals("foo a \\\"c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a\\' c b");
-		assertEquals("foo a\\' c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a\\\" c b");
-		assertEquals("foo a\\\" c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \\' c b");
-		assertEquals("foo a \\' c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \\\" c b");
-		assertEquals("foo a \\\" c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a c b\\'");
-		assertEquals("foo a c b\\'", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a c b\\\"");
-		assertEquals("foo a c b\\\"", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a c b \\'");
-		assertEquals("foo a c b \\\'", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a c b \\\"");
-		assertEquals("foo a c b \\\"", parser.getCommandLine(true));
-		parser = new ArgumentParser("\\'foo a c b");
-		assertEquals("\\\'foo a c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("\\\"foo a c b");
-		assertEquals("\\\"foo a c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("\\' foo a c b");
-		assertEquals("\\\' foo a c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("\\\" foo a c b");		
-		assertEquals("\\\" foo a c b", parser.getCommandLine(true));
-		parser = new ArgumentParser("'foo a' b c d");
-		assertEquals("foo\\ a b c d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a b 'c d'");
-		assertEquals("foo a b c\\ d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a 'b c' d");
-		assertEquals("foo a b\\ c d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a 'b\\e' d");
-		assertEquals("foo a b\\\\e d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \"b\\e\" d");
-		assertEquals("foo a b\\\\e d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a 'b c d");
-		assertEquals("foo a b\\ c\\ d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \"b c d");
-		assertEquals("foo a b\\ c\\ d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \"b c\" d");
-		assertEquals("foo a b\\ c d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \"b c\"d");
-		assertEquals("foo a b\\ cd", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a 'b c' d");
-		assertEquals("foo a b\\ c d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a 'b c'd");
-		assertEquals("foo a b\\ cd", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a 'b \" c' d");
-		assertEquals("foo a b\\ \\\"\\ c d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \"b ' c\" d");
-		assertEquals("foo a b\\ \\'\\ c d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a 'b \\\" c' d");
-		assertEquals("foo a b\\ \\\\\\\"\\ c d", parser.getCommandLine(true));
-		parser = new ArgumentParser("foo a \"b \' c\" d");		
-		assertEquals("foo a b\\ \\'\\ c d", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {});
-		assertEquals("", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"a"});
-		assertEquals("a", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"av"});
-		assertEquals("av", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"a d"});
-		assertEquals("a\\ d", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"a", "a"});
-		assertEquals("a a", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"av", "a"});
-		assertEquals("av a", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"a d", "a"});
-		assertEquals("a\\ d a", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"a", "b b"});
-		assertEquals("a b\\ b", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"av", "b b"});
-		assertEquals("av b\\ b", parser.getCommandLine(true));
-		parser = new ArgumentParser(new String[] {"a d", "b b"});
-		assertEquals("a\\ d b\\ b", parser.getCommandLine(true));
-	}
-}
diff --git a/core/org.eclipse.ptp.utils.core.tests/src/org/eclipse/ptp/utils/core/tests/suite/UtilsCoreTestSuite.java b/core/org.eclipse.ptp.utils.core.tests/src/org/eclipse/ptp/utils/core/tests/suite/UtilsCoreTestSuite.java
deleted file mode 100644
index f2ce2a5..0000000
--- a/core/org.eclipse.ptp.utils.core.tests/src/org/eclipse/ptp/utils/core/tests/suite/UtilsCoreTestSuite.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.ptp.utils.core.tests.suite;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.ptp.utils.core.tests.ArgumentParserTests;
-
-public class UtilsCoreTestSuite {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(UtilsCoreTestSuite.class.getName());
-		
-		suite.addTestSuite(ArgumentParserTests.class);
-		return suite;
-	}
-
-}
diff --git a/debug/org.eclipse.ptp.debug.core.tests/.classpath b/debug/org.eclipse.ptp.debug.core.tests/.classpath
deleted file mode 100644
index 16d067f..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/debug/org.eclipse.ptp.debug.core.tests/.project b/debug/org.eclipse.ptp.debug.core.tests/.project
deleted file mode 100644
index 9034eb0..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ptp.debug.core.tests</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>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/debug/org.eclipse.ptp.debug.core.tests/.settings/org.eclipse.jdt.core.prefs b/debug/org.eclipse.ptp.debug.core.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index d830758..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,74 +0,0 @@
-#Sat Nov 07 12:58:41 EST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/debug/org.eclipse.ptp.debug.core.tests/META-INF/MANIFEST.MF b/debug/org.eclipse.ptp.debug.core.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index fa60f30..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ptp.debug.core.tests;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %pluginProvider
-Require-Bundle: org.eclipse.core.runtime,
- org.junit,
- org.eclipse.ptp.core,
- org.eclipse.ptp.debug.core
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.eclipse.ptp.debug.core
diff --git a/debug/org.eclipse.ptp.debug.core.tests/build.properties b/debug/org.eclipse.ptp.debug.core.tests/build.properties
deleted file mode 100644
index 34d2e4d..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/build.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/debug/org.eclipse.ptp.debug.core.tests/plugin.properties b/debug/org.eclipse.ptp.debug.core.tests/plugin.properties
deleted file mode 100644
index b3cca65..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation 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:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=PTP Core Tests
-pluginProvider=Eclipse PTP
diff --git a/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/AIFTests.java b/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/AIFTests.java
deleted file mode 100644
index df81d4a..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/AIFTests.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation 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:
- * 	IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ptp.debug.core.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.ptp.debug.core.pdi.model.aif.AIFFactory;
-import org.eclipse.ptp.debug.core.pdi.model.aif.AIFFormatException;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFType;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeAddress;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeAggregate;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeArray;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeBool;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeChar;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeCharPointer;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeEnum;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeFloat;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeFunction;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeInt;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeNamed;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypePointer;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeRange;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeReference;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeString;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeUnion;
-import org.eclipse.ptp.debug.core.pdi.model.aif.IAIFTypeVoid;
-
-public class AIFTests extends TestCase {
-	public void testTypes() {
-		IAIFType t;
-		try {
-			t = AIFFactory.getAIFType("a8"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeAddress);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("{|;;;}"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeAggregate);
-			t = AIFFactory.getAIFType("{a|x=is4,y=f4;;v=pa4;}"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeAggregate);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("[r0,2is4][r-1,3is4][r10,4is4][r-10,5is4][r0,6is4]is4"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeArray);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("b1"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeBool);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("c"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeChar);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("pa4"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeCharPointer);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("<|>is4"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeEnum);
-			t = AIFFactory.getAIFType("<a|x=-1,y=0,z=1>is4"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeEnum);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("f4"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeFloat);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("&is4,f8/f8"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeFunction);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("iu8"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeInt);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("%1/^a4{s1|a=is4,b=>1/;;;}"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeNamed);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("^a4{s1|a=is4,b=f4,c=c;;;}"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypePointer);
-			t = AIFFactory.getAIFType("^a4^a4c"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypePointer);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("r-4,10is4"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeRange);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("r-4,10is4"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeRange);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType(">3/"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeReference);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("s"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeString);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("(|)"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeUnion);
-			t = AIFFactory.getAIFType("(u|a=is4,b=f8)"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeUnion);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-		try {
-			t = AIFFactory.getAIFType("v0"); //$NON-NLS-1$
-			assertTrue(t instanceof IAIFTypeVoid);
-		} catch (AIFFormatException e) {
-			fail(e.getMessage());
-		}
-	}
-}
diff --git a/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/TaskSetTests.java b/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/TaskSetTests.java
deleted file mode 100644
index a68b91b..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/TaskSetTests.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation 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:
- * 	IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ptp.debug.core.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.ptp.debug.core.TaskSet;
-
-public class TaskSetTests extends TestCase {
-	public void testToString() {
-		TaskSet b = new TaskSet();
-		b.set(3, 13);
-		b.set(15, 22);
-		String str = b.toHexString().toUpperCase();
-
-		assertEquals(str, "00000000003F9FF8"); //$NON-NLS-1$
-
-		assertEquals(b.toString(), "{3-12,15-21}"); //$NON-NLS-1$
-	}
-
-	public void testFromString() {
-		String str = "06411eda"; //$NON-NLS-1$
-		TaskSet b = new TaskSet(28, str);
-
-		String res = b.toHexString();
-
-		assertEquals(str, res);
-
-		str = "07"; //$NON-NLS-1$
-		b = new TaskSet(3, str);
-		res = b.toHexString();
-
-		assertEquals(str, res);
-	}
-}
diff --git a/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/suite/DebugCoreTestSuite.java b/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/suite/DebugCoreTestSuite.java
deleted file mode 100644
index 6e52cf8..0000000
--- a/debug/org.eclipse.ptp.debug.core.tests/src/org/eclipse/ptp/debug/core/tests/suite/DebugCoreTestSuite.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation 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:
- * 	IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.ptp.debug.core.tests.suite;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.ptp.debug.core.tests.AIFTests;
-import org.eclipse.ptp.debug.core.tests.TaskSetTests;
-
-public class DebugCoreTestSuite {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(DebugCoreTestSuite.class.getName());
-
-		suite.addTestSuite(TaskSetTests.class);
-		suite.addTestSuite(AIFTests.class);
-		return suite;
-	}
-
-}
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/.classpath b/rdt/org.eclipse.ptp.rdt.ui.tests/.classpath
deleted file mode 100644
index 3aaeea8..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="test"/>
-	<classpathentry kind="src" path="suite"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/.project b/rdt/org.eclipse.ptp.rdt.ui.tests/.project
deleted file mode 100644
index f21926c..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ptp.rdt.ui.tests</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.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/.settings/org.eclipse.jdt.core.prefs b/rdt/org.eclipse.ptp.rdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index f9482f2..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Wed Nov 19 13:50:59 EST 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/META-INF/MANIFEST.MF b/rdt/org.eclipse.ptp.rdt.ui.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index d75a279..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,25 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Tests Plug-in
-Bundle-SymbolicName: org.eclipse.ptp.rdt.ui.tests;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.eclipse.ptp.rdt.core;bundle-version="1.0.0",
- org.eclipse.ptp.rdt.core.tests;bundle-version="1.0.0",
- org.eclipse.ptp.rdt.ui;bundle-version="1.0.0",
- org.eclipse.cdt.ui.tests;bundle-version="5.0.2",
- org.eclipse.cdt.ui;bundle-version="5.0.2",
- org.eclipse.core.runtime;bundle-version="3.4.0",
- org.eclipse.cdt.core;bundle-version="5.0.2",
- org.eclipse.cdt.core.tests;bundle-version="5.0.1",
- org.junit;bundle-version="3.8.2",
- org.eclipse.ui;bundle-version="3.4.0",
- org.eclipse.core.resources;bundle-version="3.4.0",
- org.eclipse.jface.text;bundle-version="3.4.0",
- org.eclipse.ui.editors;bundle-version="3.4.0",
- org.eclipse.ptp.services.core;bundle-version="1.0.0"
-Export-Package: org.eclipse.ptp.rdt.ui.tests.navigation,
- org.eclipse.ptp.rdt.ui.tests.suite
-Bundle-Activator: org.eclipse.ptp.rdt.ui.tests.RDTUITestPlugin
-Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.ui.part
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/build.properties b/rdt/org.eclipse.ptp.rdt.ui.tests/build.properties
deleted file mode 100644
index e98e699..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2008, 2010 IBM Corporation 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:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = test/,\
-           suite/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/fixtures/navigation_test_project/test.c b/rdt/org.eclipse.ptp.rdt.ui.tests/fixtures/navigation_test_project/test.c
deleted file mode 100644
index ed3b53d..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/fixtures/navigation_test_project/test.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#import "test.h"
-
-int main(int argc, char **argv) {
-
-}
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/fixtures/navigation_test_project/test.h b/rdt/org.eclipse.ptp.rdt.ui.tests/fixtures/navigation_test_project/test.h
deleted file mode 100644
index e69de29..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/fixtures/navigation_test_project/test.h
+++ /dev/null
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/RDTUITestPlugin.java b/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/RDTUITestPlugin.java
deleted file mode 100644
index cb40be5..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/RDTUITestPlugin.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ptp.rdt.ui.tests;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-public class RDTUITestPlugin extends AbstractUIPlugin {
-
-	
-	private static RDTUITestPlugin plugin;
-	
-	public RDTUITestPlugin() {
-		super();
-		plugin = this;
-	}
-
-	public static RDTUITestPlugin getDefault() {
-		return plugin;
-	}
-}
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/suite/UIBasicTestSuite.java b/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/suite/UIBasicTestSuite.java
deleted file mode 100644
index db76260..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/suite/UIBasicTestSuite.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation 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:
- *    IBM Corporation - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.ptp.rdt.ui.tests.suite;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-
-/**
- * Tests that do not require a connection to a remote server.
- */
-public class UIBasicTestSuite extends TestCase {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(UIBasicTestSuite.class.getName());
-		// TODO add some tests
-		return suite;
-	}
-}
\ No newline at end of file
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/suite/UIConnectionTestSuite.java b/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/suite/UIConnectionTestSuite.java
deleted file mode 100644
index 7b468b7..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/suite/org/eclipse/ptp/rdt/ui/tests/suite/UIConnectionTestSuite.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation 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:
- *    IBM Corporation - initial API and implementation
- *******************************************************************************/ 
-package org.eclipse.ptp.rdt.ui.tests.suite;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.ptp.rdt.ui.tests.navigation.NavigationTests;
-
-
-/**
- * Tests that require a connection to be run,
- * this suite must be launched from a ConnectionSuite.
- */
-public class UIConnectionTestSuite extends TestCase {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(UIConnectionTestSuite.class.getName());
-		
-		suite.addTest(NavigationTests.suite());
-		
-		return suite;
-	}
-}
\ No newline at end of file
diff --git a/rdt/org.eclipse.ptp.rdt.ui.tests/test/org/eclipse/ptp/rdt/ui/tests/navigation/NavigationTests.java b/rdt/org.eclipse.ptp.rdt.ui.tests/test/org/eclipse/ptp/rdt/ui/tests/navigation/NavigationTests.java
deleted file mode 100644
index 9682617..0000000
--- a/rdt/org.eclipse.ptp.rdt.ui.tests/test/org/eclipse/ptp/rdt/ui/tests/navigation/NavigationTests.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ptp.rdt.ui.tests.navigation;
-
-import java.net.URI;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.index.IIndex;
-import org.eclipse.cdt.core.model.ILanguage;
-import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
-import org.eclipse.cdt.internal.core.parser.ParserException;
-import org.eclipse.cdt.internal.ui.editor.ASTProvider;
-import org.eclipse.cdt.internal.ui.editor.CEditor;
-import org.eclipse.cdt.ui.testplugin.EditorTestHelper;
-import org.eclipse.cdt.ui.tests.text.selection.CPPSelectionTestsAnyIndexer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ptp.internal.rdt.core.index.RemoteFastIndexer;
-import org.eclipse.ptp.internal.rdt.ui.search.actions.OpenDeclarationsAction;
-import org.eclipse.ptp.rdt.core.tests.ConnectionManager;
-import org.eclipse.ptp.rdt.core.tests.RemoteTestProject;
-import org.eclipse.ptp.services.core.ServiceModelManager;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.texteditor.AbstractTextEditor;
-
-
-@SuppressWarnings("restriction")
-
-public class NavigationTests extends CPPSelectionTestsAnyIndexer {
-
-	private static final int MAX_WAIT_TIME = 120000;
-
-	/* I think a lot of the tests that fail do so because of two reasons:
-	 * - Headers are not being skipped as they should be, 
-	 *  
-	 */
-	private static final String[] TESTS_TO_RUN = {
-		"testBug93281",
-		"testBug207320",
-		"testTemplateClassMethod_207320",
-		//"testBasicDefinition", // FAIL cannot reproduce failure
-		"testBasicTemplateInstance_207320",
-		"testBug86829A",
-		//"testCPPSpecDeclsDefs", // FAIL cannot reproduce failure
-		"testBug168533",
-		"testBug95225",
-		//"testBug95202", // FAIL, should not fail when headers are skipped properly
-		"testBug101287",
-		"testBug102258",
-		"testBug103323",
-		"testBug78354",
-		//"testBug103697", // FAIL trying to use local path which fails
-		//"testBug108202", // FAIL
-		//"testCNavigationInCppProject_bug183973", // FAIL
-		//"testFuncWithTypedefForAnonymousStruct_190730", // FAIL
-		//"testFuncWithTypedefForAnonymousEnum_190730", // FAIL
-		"testMacroNavigation",
-		"testMacroNavigation_Bug208300",
-		"testIncludeNavigation",
-		//"testNavigationCppCallsC", // FAIL
-		//"testNavigationCCallsCpp", // FAIL
-		"testNavigationInDefinedExpression_215906",
-	};
-	
-	public static Test suite() {
-		//return suite(NavigationTests.class);
-		TestSuite suite = new TestSuite();
-		for(String testName : TESTS_TO_RUN)
-			suite.addTest(new NavigationTests(testName));
-		return suite;
-	}
-	
-	
-	private static final String PROJECT_NAME = "navigation_test_project";
-	
-	@Override
-	protected String getEditorID() {
-		return "org.eclipse.ptp.rdt.ui.editor.CEditor";
-	}
-
-	@Override
-	protected void waitUntilFileIsIndexed(IIndex index, IFile file, int maxmillis) throws Exception {
-		Thread.sleep(10000);
-        CCorePlugin.getIndexManager().joinIndexer(MAX_WAIT_TIME, new NullProgressMonitor());
-	}
-
-	public NavigationTests(String name) {
-		super(name, RemoteFastIndexer.ID);
-	}
-	
-	@Override
-	protected IASTNode testF3(IFile file, int offset, int length) throws ParserException, CoreException {
-		if (offset < 0)
-			throw new ParserException("offset can not be less than 0 and was " + offset); //$NON-NLS-1$
-		
-        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-        IEditorPart part = null;
-        try {
-            part = page.openEditor(new FileEditorInput(file), getEditorID(), true); //$NON-NLS-1$
-        } catch (PartInitException e) {
-            assertFalse(true);
-        }
-        
-        if (part instanceof CEditor) {
-        	CEditor editor= (CEditor) part;
-    		EditorTestHelper.joinReconciler(EditorTestHelper.getSourceViewer(editor), 100, 500, 10);
-            ((AbstractTextEditor)part).getSelectionProvider().setSelection(new TextSelection(offset,length));
-            
-            final OpenDeclarationsAction action = (OpenDeclarationsAction) editor.getAction("OpenDeclarations"); //$NON-NLS-1$
-            action.runSync();
-			
-        	// update the file/part to point to the newly opened IFile/IEditorPart
-            part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); 
-            assertTrue (part instanceof CEditor);
-            editor= (CEditor) part;
-    		EditorTestHelper.joinReconciler(EditorTestHelper.getSourceViewer(editor), 100, 500, 10);
-
-    		// the action above should highlight the declaration, so now retrieve it and use that selection to get the IASTName selected on the TU
-            ISelection sel= editor.getSelectionProvider().getSelection();
-            
-            final IASTName[] result= {null};
-            if (sel instanceof ITextSelection) {
-            	final ITextSelection textSel = (ITextSelection)sel;
-            	ITranslationUnit tu = (ITranslationUnit)editor.getInputCElement();
-        		IStatus ok= ASTProvider.getASTProvider().runOnAST(tu, ASTProvider.WAIT_IF_OPEN, new NullProgressMonitor(), new ASTRunnable() {
-        			public IStatus runOnAST(ILanguage language, IASTTranslationUnit ast) throws CoreException {
-        				result[0]= ast.getNodeSelector(null).findName(textSel.getOffset(), textSel.getLength());
-        				return Status.OK_STATUS;
-        			}
-        		});
-        		assertTrue(ok.isOK());
-				return result[0];
-            }
-        }
-        
-        return null;
-    }
-	
-
-	protected void setUp() throws Exception {
-		//super.setUp();
-		
-		IWorkbenchPage page= PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-		IViewReference[] refs= page.getViewReferences();
-		for (int i = 0; i < refs.length; i++) {
-			IViewReference viewReference = refs[i];
-			page.setPartState(viewReference, IWorkbenchPage.STATE_RESTORED);
-		}
-		
-		URI projectRootURI = ConnectionManager.getInstance().getWorkspaceURI(PROJECT_NAME);
-		RemoteTestProject remoteProject = new RemoteTestProject(PROJECT_NAME, projectRootURI);
-		
-		ConnectionManager.getInstance().resetServiceModel(remoteProject.getName());
-		ServiceModelManager.getInstance().printServiceModel();
-		
-		fCProject = remoteProject.getCProject();
-	
-		CCorePlugin.getIndexManager().setIndexerId(fCProject, RemoteFastIndexer.ID);
-	}
-	
-	
-	protected void tearDown() throws Exception {
-		super.tearDown(); 
-	}
-
-}
diff --git a/releng/org.eclipse.ptp.releng/.cvsignore b/releng/org.eclipse.ptp.releng/.cvsignore
deleted file mode 100644
index 3d9429e..0000000
--- a/releng/org.eclipse.ptp.releng/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-results
-tools
diff --git a/releng/org.eclipse.ptp.releng/.project b/releng/org.eclipse.ptp.releng/.project
deleted file mode 100644
index 4f01de7..0000000
--- a/releng/org.eclipse.ptp.releng/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ptp.releng</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/releng/org.eclipse.ptp.releng/addDownloadStats.xsl b/releng/org.eclipse.ptp.releng/addDownloadStats.xsl
deleted file mode 100644
index 8381dc1..0000000
--- a/releng/org.eclipse.ptp.releng/addDownloadStats.xsl
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--
-Copyright (c) 2010 Mia-Software
-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:
-Gregoire Dupe
--->
-<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
-	version="1.0">
-	<xsl:output encoding="UTF-8" method="xml" indent="yes" />
-	<xsl:strip-space elements="*" />
-
-	<xsl:template match="/">
-		<xsl:processing-instruction name="artifactRepository">version='1.1.0'</xsl:processing-instruction>
-
-		<xsl:apply-templates />
-	</xsl:template>
-
-	<xsl:template match="repository/properties">
-		<properties size='{@size+1}'>
-			<xsl:copy-of select="property" />
-			<property name='p2.statsURI' value='http://download.eclipse.org/stats/ptp' />
-		</properties>
-	</xsl:template>
-
-	<xsl:template match="artifact[@classifier='org.eclipse.update.feature' and @id='org.eclipse.ptp.core']/properties">
-		<xsl:call-template name="artifact_properties"/>
-	</xsl:template>
-	
-	<xsl:template match="artifact[@classifier='org.eclipse.update.feature' and @id='org.eclipse.ptp.rdt']/properties">
-		<xsl:call-template name="artifact_properties"/>
-	</xsl:template>
-
-	<xsl:template match="artifact[@classifier='org.eclipse.update.feature' and @id='org.eclipse.photran']/properties">
-		<xsl:call-template name="artifact_properties"/>
-	</xsl:template>
- 
- 	<xsl:template name="artifact_properties">
- 		<properties size='{@size+1}'>
-			<xsl:copy-of select="property" />
-			<property name='download.stats' value='{../@id}_{substring(../@version, 1, string-length(../@version)-15)}' />
-		</properties>
-	</xsl:template>
-
-	<xsl:template match="*">
-		<xsl:copy>
-			<xsl:for-each select="@*">
-				<xsl:copy-of select="." />
-			</xsl:for-each>
-			<xsl:apply-templates />
-		</xsl:copy>
-	</xsl:template>
-
-</xsl:stylesheet>
diff --git a/releng/org.eclipse.ptp.releng/build.sh b/releng/org.eclipse.ptp.releng/build.sh
deleted file mode 100644
index daf43b5..0000000
--- a/releng/org.eclipse.ptp.releng/build.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#*******************************************************************************
-# Copyright (c) 2008, 2009 IBM Corporation 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:
-#     IBM Corporation - initial API and implementation
-#*******************************************************************************
-
-# export display for running the tests
-export DISPLAY=:1
-
-# set up to use the Java 5 JRE
-JVM_1_5=/shared/common/jdk-1.5.0_16
-export PATH=$JVM_1_5/bin:$PATH
-
-# make sure we're in the releng project dir 
-cd `dirname $0`
-
-umask 0022
-
-# Checkout basebuilder to run the build
-mkdir -p tools
-cd tools
-cvs -d /cvsroot/eclipse checkout -r v20100423 org.eclipse.releng.basebuilder
-cd ..
-
-# Let's go!
-java -jar tools/org.eclipse.releng.basebuilder/plugins/org.eclipse.equinox.launcher.jar \
-	-Djvm1.5=$JVM_1_5/bin/java \
-	-ws gtk -arch x86_64 -os linux -application org.eclipse.ant.core.antRunner $*
-
-exit 0
diff --git a/releng/org.eclipse.ptp.releng/build.xml b/releng/org.eclipse.ptp.releng/build.xml
deleted file mode 100644
index ad4b919..0000000
--- a/releng/org.eclipse.ptp.releng/build.xml
+++ /dev/null
@@ -1,965 +0,0 @@
-<project name="PTP" default="nightly">
-	<target name="hi">
-		<echo message="${eclipse.home}"/>
-	</target>
-	
-	<target name="build" depends="zips,p2,test"/>
-	<target name="nightly" depends="tag,zips,sign,p2,test,copy,check"/>
-	<target name="testbuild" depends="zips,test,copy"/>
-	<target name="buildcopy" depends="zips,copy"/>
-	
-	<target name="init">
-		<touch file="${user.home}/.cvspass" />
-		<tstamp/>
-		<!-- Update for new simultaneous release -->
-		<property name="eclipseRelease" value="4.1"/>
-		<!-- Update for new PTP branch -->
-		<property name="ptpBranchVersion" value="4.1.0"/>
-		<property name="photranBranchVersion" value="6.1.0"/>
-		<!-- The following properties need to be updated to reflect the version we are building against. -->
-		<!-- NOTE: changing any of these will require corresponding changes in org.eclipse.ptp.rdt.core.remotejars/build.xml -->
-		<!-- Update for new Eclipse version -->
-		<property name="eclipseDist" value="/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk-x86_64.tar.gz"/>
-		<!-- Update for new CDT version -->
-		<property name="cdtDist" value="/home/data/httpd/download.eclipse.org/tools/cdt/builds/7.0.2/201108051437/cdt-master-7.0.2-201108051437.zip"/>
-		<!-- Update for new RSE version -->
-		<property name="rseDist" value="/home/data/httpd/download.eclipse.org/tm/downloads/drops/R-3.2.2-201102130444/RSE-SDK-3.2.2.zip"/>
-		<!-- Update for new Mylyn version -->
-		<!--
-		<property name="mylynDist" value="/home/data/httpd/download.eclipse.org/tools/mylyn/update/mylyn-3.4.3-e3.4.zip"/>
-		-->
-		<!-- Update to build against a different branch                  -->
-		<!-- NOTE: master/build.properties will also have to be changed! -->
-		<property name="ptpTagBranch" value="-r ptp_4_1"/>
-		<property name="photranTagBranch" value="-r ptp_4_1"/>
-		<!-- Properties below here shouldn't need to be changed -->
-		<property name="timestamp" value="${DSTAMP}${TSTAMP}" />
-		<property name="buildType" value="I" />
-		<property name="buildId" value="${buildType}${timestamp}"/>
-		<property name="forceContextQualifier" value="${timestamp}"/>
-		<property name="buildingOSGi" value="true"/>
-		<property name="buildDirectory" value="${basedir}/results"/>
-		<property name="releaseDir" value="/home/data/httpd/download.eclipse.org/tools/ptp/builds/${eclipseRelease}"/>
-		<property name="copyToDir" value="${releaseDir}/${buildType}.${buildId}"/>
-		<property name="testDirectory" value="${buildDirectory}/test"/>
-		<property name="baseLocation" value="${buildDirectory}/eclipse"/>
-		<property name="pde.build.scripts" value="${eclipse.pdebuild.scripts}"/>
-		<property name="collectingFolder" value="eclipse"/>
-		<property name="archivePrefix" value="eclipse"/>
-		<property name="zipsdir" value="${buildDirectory}/${buildType}.${buildId}"/>
-		<property name="masterFile" value="ptp-master-${ptpBranchVersion}-${buildId}.zip"/>
-		<property name="masterFeature" value="org.eclipse.ptp.master_${ptpBranchVersion}.${timestamp}.jar"/>
-		<property name="proxyFile" value="ptp-proxy-${ptpBranchVersion}-${buildId}.zip"/>
-		<property name="eclipseTest" value="org.eclipse.test_3.2.0"/>
-		<property name="mailto" value="g.watson@computer.org"/>
-		<property name="eclipseRoot" value="/cvsroot/eclipse"/>
-		<property name="baseos" value="${osgi.os}"/>
-		<property name="basews" value="${osgi.ws}"/>
-		<property name="basearch" value="${osgi.arch}"/>
-		<property name="tagname" value="v${timestamp}"/>
-		<property name="testReports" value="${zipsdir}/testReports"/>
-		<property name="junit-report-output" value="${testReports}"/>
-		<property name="jvm1.5" value="java"/>
-		<condition property="onWindows">
-			<os family="windows"/>
-		</condition>
-		<mkdir dir="${buildDirectory}"/>
-		<mkdir dir="${testReports}"/>
-	</target>
-	
-	<target name="fetch" depends="init">
-		<ant antfile="build.xml" dir="${pde.build.scripts}" target="preBuild">
-			<property name="builder" value="${basedir}/master"/>
-		</ant>
-		<ant antfile="build.xml" dir="${pde.build.scripts}" target="fetch">
-			<property name="builder" value="${basedir}/master"/>
-		</ant>
-	</target>
-	
-	<target name="unzip" depends="init" unless="dontUnzip">
-		<untar src="${eclipseDist}" dest="${buildDirectory}" compression="gzip"/>
-		<unzip src="${rseDist}" dest="${buildDirectory}"/>
-		<unzip src="${cdtDist}" dest="${buildDirectory}/eclipse"/>
-		<!--
-		<unzip src="${mylynDist}" dest="${buildDirectory}/eclipse"/>
-		-->
-	</target>
-	
-	<target name="zips" depends="init,unzip">
-		<ant antfile="build.xml" dir="${pde.build.scripts}">
-			<property name="builder" value="${basedir}/master" />
-		</ant>
-		<concat destfile="${zipsdir}/compilelog.txt">
-			<fileset dir="${buildDirectory}/plugins" includes="**/*@dot.log"/>
-		</concat>
-		<loadfile property="compileLog" srcFile="${zipsdir}/compilelog.txt"/>
-		<condition property="hasErrors">
-			<contains string="${compileLog}" substring=" ERROR"/>
-		</condition>
-		<move file="${zipsdir}/${masterFile}" todir="${buildDirectory}"/>
-		
-		<unzip src="${buildDirectory}/${masterFile}" dest="${buildDirectory}/site"/>
-		<copy file="${buildDirectory}/eclipse/epl-v10.html" todir="${buildDirectory}/site/eclipse"/>
-		<copy file="${buildDirectory}/eclipse/notice.html" todir="${buildDirectory}/site/eclipse"/>
-		<copy file="index.html" todir="${buildDirectory}/site/eclipse"/>
-		<mkdir dir="${buildDirectory}/site/eclipse/web"/>
-		<copy todir="${buildDirectory}/site/eclipse/web">
-			<fileset dir="web"/>
-		</copy>
-		<copy file="buildsite.xml" tofile="${buildDirectory}/site/eclipse/site.xml"/>
-		<replace file="${buildDirectory}/site/eclipse/site.xml">
-			<replacefilter token="@ptpBranchVersion@" value="${ptpBranchVersion}"/>
-			<replacefilter token="@photranBranchVersion@" value="${photranBranchVersion}"/>
-			<replacefilter token="@timeStamp@" value="${timestamp}"/>
-		</replace>
-		<copy file="pack.properties" todir="${buildDirectory}/site/eclipse"/>
-
-		<!-- remove the master feature from the update site -->
-		<delete verbose="true" file="${buildDirectory}/site/eclipse/features/${masterFeature}"/>
-
-		<zip destfile="${zipsdir}/${masterFile}"
-			basedir="${buildDirectory}/site/eclipse"/>
-		
-		<!-- generate proxy zip -->
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.aix.ppc_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.aix.ppc"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.linux.ppc_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.linux.ppc"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.linux.x86_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.linux.x86"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.linux.x86_64_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.linux.x86_64"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.macosx.ppc_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.macosx.ppc"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.macosx.x86_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.macosx.x86"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.debug.sdm_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.debug.sdm"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.proxy_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.proxy"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.utils_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.utils"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.rm.ibm.ll.proxy_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.rm.ibm.ll.proxy"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.rm.ibm.pe.proxy_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.rm.ibm.pe.proxy"/>
-		</copy>
-		<copy todir="${buildDirectory}/proxy/org.eclipse.ptp.rm.slurm.proxy_${ptpBranchVersion}.${timestamp}">
-			<fileset dir="${buildDirectory}/plugins/org.eclipse.ptp.rm.slurm.proxy"/>
-		</copy>
-		<zip destfile="${zipsdir}/${proxyFile}">
-			<fileset dir="${buildDirectory}">
-				<include name="proxy/**/*"/>
-			</fileset>
-		</zip>
-	</target>
-
-	<target name="sign" depends="init" unless="hasErrors">
-		<exec executable="sign">
-			<arg value="${buildDirectory}/${buildType}.${buildId}/${masterFile}"/>
-			<arg value="nomail"/>
-			<arg value="${buildDirectory}/signed"/>
-		</exec>
-		<waitfor maxwait="60" maxwaitunit="minute">
-			<available file="${buildDirectory}/signed/${masterFile}"/>
-		</waitfor>
-		<move file="${buildDirectory}/signed/${masterFile}" todir="${zipsdir}"/>
-	</target>
-	
-	<target name="test" depends="init" unless="hasErrors"/>
-	
-	<target name="check" depends="init" if="hasErrors">
-		<echo>BUILD FAILED</echo>
-		<echo>Errors were detected in the build output.</echo>
-	</target>
-		
-	<target name="copy" depends="init" unless="hasErrors">
-		<mkdir dir="${copyToDir}"/>
-		<copy todir="${copyToDir}">
-			<fileset dir="${buildDirectory}/${buildType}.${buildId}"/>
-		</copy>
-		<chmod perm="g+w" dir="${copyToDir}">
-			<dirset dir="${copyToDir}"/>
-		</chmod>
-		<!-- Create symlink to latest build -->
-		<delete file="${releaseDir}/latest" followsymlinks="false" failonerror="false"/>
-		<!--symlink action="delete" link="${copyToDir}/latest" failonerror="false"/-->
-		<symlink link="${releaseDir}/latest" resource="${copyToDir}" overwrite="true"/>
-		<delete file="${releaseDir}/ptp-master-${ptpBranchVersion}-latest.zip" followsymlinks="false" failonerror="false"/>
-		<!--symlink action="delete" link="${copyToDir}/ptp-master-${ptpBranchVersion}-latest.zip" failonerror="false"/-->
-		<symlink link="${releaseDir}/ptp-master-${ptpBranchVersion}-latest.zip" resource="${copyToDir}/${masterFile}" overwrite="true"/>
-		<delete file="${releaseDir}/rdt-server-unix-${ptpBranchVersion}-latest.tar" followsymlinks="false" failonerror="false"/>
-		<!--symlink action="delete" link="${copyToDir}/rdt-server-unix-${ptpBranchVersion}-latest.tar" failonerror="false"/-->
-		<symlink link="${releaseDir}/rdt-server-unix-${ptpBranchVersion}-latest.tar" resource="${copyToDir}/rdt-server-unix-${ptpBranchVersion}.tar" overwrite="true"/>
-		<symlink link="${releaseDir}/rdt-server-aix-${ptpBranchVersion}-latest.tar" resource="${copyToDir}/rdt-server-aix-${ptpBranchVersion}.tar" overwrite="true"/>
-	</target>
-	
-	<target name="p2" depends="init" unless="hasErrors">
-		<!-- unzip the signed master site -->
-		<property name="p2dir" value="${zipsdir}/p2"/>
-		<property name="destination" value="${zipsdir}/${masterFile}"/>
-		
-		<unzip src="${destination}" dest="${p2dir}"/>
-		
-		<!-- generate p2 metadata -->
-		<antcall target="p2.metadata.generator">
-			<param name="p2site" value="${p2dir}"/>
-		</antcall>
-		
-		<!-- add download stats -->
-		<antcall target="download.stats">
-			<param name="p2site" value="${p2dir}"/>
-		</antcall>
-		
-		<!-- zip everything back up -->
-		<zip destfile="${destination}"
-			basedir="${p2dir}"/>
-		<delete dir="${p2dir}"/>
-	</target>
-		
-    <target name="p2.metadata.generator">
-    	<echo message="Generate p2 Metadata" />
-    	<property name="p2site" value="${zipsdir}/p2"/>
-    	<property name="launcher" value="${basedir}/tools/org.eclipse.releng.basebuilder/plugins/org.eclipse.equinox.launcher.jar"/>
-    	<java jar="${launcher}" fork="true" timeout="10800000" jvm="${jvm1.5}" failonerror="true" maxmemory="768m" dir="${buildDirectory}/eclipse">
-            <arg line="-application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator" />
-            <arg line="-updateSite ${p2site}"/>
-        	<arg line="-site file:${p2site}/site.xml"/>
-        	<arg line="-metadataRepository file:${p2site}"/>
-        	<arg line="-metadataRepositoryName PTP Update Site"/>
-        	<arg line="-artifactRepository file:${p2site}"/>
-        	<arg line="-artifactRepositoryName PTP Artifacts"/>
-        	<arg line="-compress"/>
-        	<arg line="-reusePack200Files"/>
-        	<arg line="-noDefaultIUs"/>
-        	<arg line="-vmargs -Xmx256M"/>
-        </java>
-	</target>
-	
-	<target name = "download.stats">
-		<echo message="Adding download stats"/>
-		<unzip src="${p2dir}/artifacts.jar" dest="${p2dir}"/>
-		<move file="${p2dir}/artifacts.xml" tofile="${p2dir}/artifacts.xml_tmp"/>
-		<xslt style="${basedir}/addDownloadStats.xsl" in="${p2dir}/artifacts.xml_tmp" out="${p2dir}/artifacts.xml" />
-		<zip destfile="${p2dir}/artifacts.jar" basedir="${p2dir}" includes="artifacts.xml"/>
-		<delete file="${p2dir}/artifacts.xml"/>
-		<delete file="${p2dir}/artifacts.xml_tmp"/>
-	</target>
-		
-	<target name="tagone">
-		<cvs cvsroot="/cvsroot/tools" command="rtag ${tagbranch} ${tagname} ${tagmodule}"/>
-	</target>
-	
-	<target name="tag" depends="init">
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.master"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		
-		<!--Features-->
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.utils-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.core-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.remote-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.remote.remotetools-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.remote.rse-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.remotetools-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rm.ibm.ll-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rm.ibm.pe-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rm.mpich2-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rm.openmpi-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rm.slurm-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rm.pbs-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.external-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.sdm-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.pldt-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.pldt.lapi-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.pldt.upc-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.etfw-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.etfw.tau-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.etfw.ppw-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.etfw.tau.fortran-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rdt-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rdt.xlc-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rdt.remotejars-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.rdt.remotetools-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.services-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.gem-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.sci-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		
-		<!--Plugins-->
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.utils.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.utils.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.proxy.protocol"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.remote.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.remote.remotetools.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.remote.remotetools.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.remote.rse.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.remote.rse.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.remote.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.generic.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.generic.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.help"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.proxy"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>			
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.help"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.proxy"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.mpich2.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.mpich2.proxy"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.mpich2.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.openmpi.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.openmpi.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.jproxy"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.help"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.proxy.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.help"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.proxy"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-			<param name="tagmodule" value="org.eclipse.ptp/rms/org.eclipse.ptp.rm.ui"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/debug/org.eclipse.ptp.debug.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/debug/org.eclipse.ptp.debug.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.proxy"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.utils"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.generichost"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.launcher"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.preferences"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.utils"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.launch"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/doc/org.eclipse.ptp.doc.user"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.common"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.doc.user"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.lapi"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.mpi.analysis"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>			
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.mpi.analysis.cdt"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.mpi.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.openmp.analysis"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.openmp.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.openmp.ui.pv"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.upc"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.wizards"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/ppw/org.eclipse.ptp.etfw.ppw"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.jars"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.papiselect"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.perfdmf"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.selinst"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.selinstfort"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.toolopts"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.feedback"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.remotejars"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.stubs"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.server.dstore"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.doc.user"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.managedbuilder.gnu.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.managedbuilder.xlc.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.managedbuilder.xlupc.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.xlc"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.make.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.tests"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.services.test"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.ui.test"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.aix.ppc"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.linux.ppc"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.linux.x86"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.linux.x86_64"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.macosx.ppc"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.macosx.x86"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.parallel"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.services.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.services.test"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/core/org.eclipse.ptp.services.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/gem/org.eclipse.ptp.gem"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/sci/org.eclipse.ptp.sci"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/gem/org.eclipse.ptp.gem.help"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran-dev-docs"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran-feature"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran-samples"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.cdtinterface"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.cdtinterface.vpg"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.cmdline"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.core"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.core.intel"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.core.vpg"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.core.vpg.preprocessor.c"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.core.vpg.preprocessor.c.tests"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.core.vpg.tests"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.core.vpg.tests.failing"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.doc.user"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.errorparsers.xlf"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.intel-feature"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.core"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.gnu.ui"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.intel.ui"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.ui"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.xlf.ui"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.master"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.releng"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.ui"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.ui.vpg"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.ui.vpg.preprocessor.c"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>	
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.vpg-feature"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.photran.xlf-feature"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine-feature"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine-support"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-		</antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.core"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.core.refactoring"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.core.vpg"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.core.vpg.tests"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.doc.isv"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.examples.testing"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.examples.text"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.testing.junit3"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.ui"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.ui.refactoring"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-        <antcall target="tagone">
-            <param name="tagmodule" value="org.eclipse.ptp/photran/org.eclipse.rephraserengine.ui.vpg"/>
-			<param name="tagbranch" value="${photranTagBranch}"/>
-        </antcall>
-	</target>
-</project>
diff --git a/releng/org.eclipse.ptp.releng/buildsite.xml b/releng/org.eclipse.ptp.releng/buildsite.xml
deleted file mode 100644
index e51a125..0000000
--- a/releng/org.eclipse.ptp.releng/buildsite.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-   <description url="http://download.eclipse.org/tools/ptp/updates/helios">
-      Parallel Tools Platform Helios Update Site
-   </description>
-   <feature url="features/org.eclipse.ptp_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.core_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.core" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.debug.sdm_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.debug.sdm" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.etfw_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.etfw" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.external_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.external" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.pldt_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.pldt" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.remote_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.remote" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.remote.remotetools_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.remote.remotetools" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-    <feature url="features/org.eclipse.ptp.remotetools_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.remotetools" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.ibm.ll_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rm.ibm.ll" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.ibm.pe_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rm.ibm.pe" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.mpich2_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rm.mpich2" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.openmpi_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rm.openmpi" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.pbs_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rm.pbs" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.slurm_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rm.slurm" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.services_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.services" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.utils_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.utils" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.pldt.lapi_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.pldt.lapi" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.gem_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.gem" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.remote.rse_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.remote.rse" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.pldt.upc_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.pldt.upc" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.etfw.tau_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.etfw.tau" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-    <feature url="features/org.eclipse.ptp.etfw.tau.fortran_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.etfw.tau.fortran" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.etfw.ppw_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.etfw.ppw" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.sci_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.sci" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rdt_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rdt" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Remote Development Tools"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rdt.xlc_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rdt.xlc" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Remote Development Tools"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rdt.remotetools_@ptpBranchVersion@.@timeStamp@.jar" id="org.eclipse.ptp.rdt.remotetools" version="@ptpBranchVersion@.@timeStamp@">
-      <category name="Remote Development Tools"/>
-   </feature>
-   <feature url="features/org.eclipse.photran_@photranBranchVersion@.@timeStamp@.jar" id="org.eclipse.photran" version="@photranBranchVersion@.@timeStamp@">
-      <category name="Fortran Development Tools (Photran)"/>
-   </feature>
-   <feature url="features/org.eclipse.photran.intel_@photranBranchVersion@.@timeStamp@.jar" id="org.eclipse.photran.intel" version="@photranBranchVersion@.@timeStamp@" os="linux">
-      <category name="Fortran Development Tools (Photran)"/>
-   </feature>
-   <feature url="features/org.eclipse.photran.xlf_@photranBranchVersion@.@timeStamp@.jar" id="org.eclipse.photran.xlf" version="@photranBranchVersion@.@timeStamp@">
-      <category name="Fortran Development Tools (Photran)"/>
-   </feature>
-   <feature url="features/org.eclipse.rephraserengine_@photranBranchVersion@.@timeStamp@.jar" id="org.eclipse.rephraserengine" version="@photranBranchVersion@.@timeStamp@">
-      <category name="Fortran Development Tools (Photran)"/>
-   </feature>
-   <category-def name="Parallel Tools Platform" label="Parallel Tools Platform"/>
-   <category-def name="Remote Development Tools" label="Remote Development Tools"/>
-   <category-def name="Fortran Development Tools (Photran)" label="Fortran Development Tools (Photran)"/>
-</site>
diff --git a/releng/org.eclipse.ptp.releng/index.html b/releng/org.eclipse.ptp.releng/index.html
deleted file mode 100644
index b402e6c..0000000
--- a/releng/org.eclipse.ptp.releng/index.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<html>
-<head>
-<title>PTP Update Site</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<style>@import url("web/site.css");</style>
-<script type="text/javascript">
-    var transformDone = false;
-    var stylesheet, xmlFile;
-
-    function loadXMLDoc(url, callback) {
-        if (window.XMLHttpRequest) {
-            var req = new XMLHttpRequest();
-
-            function processReqChange() {
-                if (req.readyState == 4) {    // only if req shows "loaded"
-                    if (req.status == 200) {  // only if "OK"
-                        callback(req.responseXML);
-                    } else {
-                        alert("There was a problem retrieving the XML data:\n" + req.statusText);
-                    }
-                }
-            }
-
-            req.onreadystatechange = processReqChange;
-            req.open("GET", url, true);
-            req.send(null);
-        }
-    }
-
-    function init() {
-        if (window.ActiveXObject) {
-            xmlFile = new ActiveXObject("msxml2.DOMDocument.3.0");
-            xmlFile.async = false;
-            xmlFile.load("site.xml");
-            stylesheet = new ActiveXObject("msxml2.FreeThreadedDOMDocument.3.0");
-            stylesheet.async = false;
-            stylesheet.load("web/site.xsl");
-            cache = new ActiveXObject("msxml2.XSLTemplate.3.0");
-            cache.stylesheet = stylesheet;
-            transformDataIE();
-        } else {
-            xmlFile = stylesheet = null;
-            transformDone = false;
-	    loadXMLDoc("site.xml",
-                function(result) {
-		    xmlFile = result;
-                    transform();
-                }
-            );
-            loadXMLDoc("web/site.xsl",
-                function(result) {
-                    stylesheet = result;
-                    transform();
-                }
-	    );
-        }
-    }
-    function transform() {
-        if (!transformDone && xmlFile && stylesheet) {
-            var processor = new XSLTProcessor();
-            processor.importStylesheet(stylesheet);
-            var doc = processor.transformToDocument(xmlFile);
-            var dataDivBody = document.getElementById("data");
-//          alert(new XMLSerializer().serializeToString(doc.documentElement.innerHTML));
-            dataDivBody.innerHTML = doc.documentElement.innerHTML;
-            transformDone = true;
-        }
-    }
-    function transformDataIE() { // separate transformation function for IE 6.0+
-        var processor = cache.createProcessor();
-        processor.input = xmlFile;
-	processor.transform();
-	data.innerHTML = processor.output;
-    }
-</script>
-</head>
-<body onload="init();">
-<!--[insert static HTML here]-->
-<div id="data"><!-- this is where the transformed data goes --></div>
-</body>
-</html>
diff --git a/releng/org.eclipse.ptp.releng/maps/photran.map b/releng/org.eclipse.ptp.releng/maps/photran.map
deleted file mode 100644
index 4b962b9..0000000
--- a/releng/org.eclipse.ptp.releng/maps/photran.map
+++ /dev/null
@@ -1,36 +0,0 @@
-! Master feature
-!feature@org.eclipse.photran.master=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.master
-
-! Photran features
-feature@org.eclipse.rephraserengine=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine-feature
-feature@org.eclipse.photran=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran-feature
-feature@org.eclipse.photran.xlf=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.xlf-feature
-feature@org.eclipse.photran.intel=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.intel-feature
-
-! Plugins
-plugin@org.eclipse.rephraserengine.core=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine.core
-plugin@org.eclipse.rephraserengine.core.refactoring=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine.core.refactoring
-plugin@org.eclipse.rephraserengine.core.vpg=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine.core.vpg
-plugin@org.eclipse.rephraserengine.doc.isv=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine.doc.isv
-plugin@org.eclipse.rephraserengine.ui=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine.ui
-plugin@org.eclipse.rephraserengine.ui.refactoring=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine.ui.refactoring
-plugin@org.eclipse.rephraserengine.ui.vpg=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.rephraserengine.ui.vpg
-plugin@org.eclipse.photran.core=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.core
-plugin@org.eclipse.photran.managedbuilder.core=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.core
-plugin@org.eclipse.photran.managedbuilder.ui=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.ui
-plugin@org.eclipse.photran.cdtinterface=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.cdtinterface
-plugin@org.eclipse.photran.ui=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.ui
-plugin@org.eclipse.photran.managedbuilder.gnu.ui=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.gnu.ui
-plugin@org.eclipse.photran.cdtinterface.vpg=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.cdtinterface.vpg
-plugin@org.eclipse.photran.core.vpg=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.core.vpg
-plugin@org.eclipse.photran.ui.vpg=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.ui.vpg
-plugin@org.eclipse.photran.core.vpg.preprocessor.c=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.core.vpg.preprocessor.c
-plugin@org.eclipse.photran.ui.vpg.preprocessor.c=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.ui.vpg.preprocessor.c
-plugin@org.eclipse.photran.managedbuilder.intel.ui=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.intel.ui
-plugin@org.eclipse.photran.core.intel=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.core.intel
-plugin@org.eclipse.photran.errorparsers.xlf=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.errorparsers.xlf
-plugin@org.eclipse.photran.managedbuilder.xlf.ui=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.managedbuilder.xlf.ui
-plugin@org.eclipse.photran.doc.user=@photranTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/photran/org.eclipse.photran.doc.user
-
-! Tests
-
diff --git a/releng/org.eclipse.ptp.releng/maps/ptp.map b/releng/org.eclipse.ptp.releng/maps/ptp.map
deleted file mode 100644
index 2dbf06e..0000000
--- a/releng/org.eclipse.ptp.releng/maps/ptp.map
+++ /dev/null
@@ -1,167 +0,0 @@
-! The master
-feature@org.eclipse.ptp.master=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.master
-
-! PTP features
-feature@org.eclipse.ptp=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp-feature
-feature@org.eclipse.ptp.utils=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.utils-feature
-feature@org.eclipse.ptp.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.core-feature
-feature@org.eclipse.ptp.remote=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.remote-feature
-feature@org.eclipse.ptp.remote.remotetools=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.remote.remotetools-feature
-feature@org.eclipse.ptp.remote.rse=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.remote.rse-feature
-feature@org.eclipse.ptp.remotetools=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.remotetools-feature
-feature@org.eclipse.ptp.rm.ibm.ll=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rm.ibm.ll-feature
-feature@org.eclipse.ptp.rm.ibm.pe=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rm.ibm.pe-feature
-feature@org.eclipse.ptp.rm.mpich2=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rm.mpich2-feature
-feature@org.eclipse.ptp.rm.openmpi=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rm.openmpi-feature
-feature@org.eclipse.ptp.rm.pbs=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rm.pbs-feature
-feature@org.eclipse.ptp.rm.slurm=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rm.slurm-feature
-feature@org.eclipse.ptp.external=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.external-feature
-feature@org.eclipse.ptp.debug.sdm=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.sdm-feature
-feature@org.eclipse.ptp.services=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.services-feature
-
-! PLDT features
-feature@org.eclipse.ptp.pldt=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.pldt-feature
-feature@org.eclipse.ptp.pldt.lapi=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.pldt.lapi-feature
-feature@org.eclipse.ptp.pldt.upc=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.pldt.upc-feature
-
-! ETFw (formerly PERF) features
-feature@org.eclipse.ptp.etfw=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.etfw-feature
-feature@org.eclipse.ptp.etfw.tau=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.etfw.tau-feature
-feature@org.eclipse.ptp.etfw.tau.fortran=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.etfw.tau.fortran-feature
-feature@org.eclipse.ptp.etfw.ppw=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.etfw.ppw-feature
-
-! RDT features
-feature@org.eclipse.ptp.rdt=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rdt-feature
-feature@org.eclipse.ptp.rdt.xlc=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rdt.xlc-feature
-feature@org.eclipse.ptp.rdt.remotejars=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rdt.remotejars-feature
-feature@org.eclipse.ptp.rdt.remotetools=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.rdt.remotetools-feature
-
-! GEM feature
-feature@org.eclipse.ptp.gem=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.gem-feature
-
-! PPW Feature
-plugin@org.eclipse.ptp.etfw.ppw=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/ppw/org.eclipse.ptp.etfw.ppw
-
-! SCI feature
-feature@org.eclipse.ptp.sci=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.sci-feature
-
-! PTP Plugins
-plugin@org.eclipse.ptp=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp
-plugin@org.eclipse.ptp.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.core
-plugin@org.eclipse.ptp.utils.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.utils.core
-plugin@org.eclipse.ptp.utils.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.utils.ui
-plugin@org.eclipse.ptp.proxy.protocol=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.proxy.protocol
-plugin@org.eclipse.ptp.remote.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.remote.core
-plugin@org.eclipse.ptp.remote.remotetools.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.remote.remotetools.core
-plugin@org.eclipse.ptp.remote.remotetools.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.remote.remotetools.ui
-plugin@org.eclipse.ptp.remote.rse.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.remote.rse.core
-plugin@org.eclipse.ptp.remote.rse.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.remote.rse.ui
-plugin@org.eclipse.ptp.remote.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.remote.ui
-plugin@org.eclipse.ptp.rm.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.core
-plugin@org.eclipse.ptp.rm.generic.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.generic.core
-plugin@org.eclipse.ptp.rm.generic.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.generic.ui
-plugin@org.eclipse.ptp.rm.ibm.ll.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.core
-plugin@org.eclipse.ptp.rm.ibm.ll.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.help
-plugin@org.eclipse.ptp.rm.ibm.ll.proxy=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.proxy
-plugin@org.eclipse.ptp.rm.ibm.ll.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.ll.ui
-plugin@org.eclipse.ptp.rm.ibm.pe.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.core
-plugin@org.eclipse.ptp.rm.ibm.pe.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.help
-plugin@org.eclipse.ptp.rm.ibm.pe.proxy=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.proxy
-plugin@org.eclipse.ptp.rm.ibm.pe.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ibm.pe.ui
-plugin@org.eclipse.ptp.rm.mpi.mpich2.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.mpich2.core
-plugin@org.eclipse.ptp.rm.mpi.mpich2.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.mpich2.ui
-plugin@org.eclipse.ptp.rm.mpi.openmpi.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.openmpi.core
-plugin@org.eclipse.ptp.rm.mpi.openmpi.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.mpi.openmpi.ui
-plugin@org.eclipse.ptp.rm.pbs.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.core
-plugin@org.eclipse.ptp.rm.pbs.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.help
-plugin@org.eclipse.ptp.rm.pbs.jproxy=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.jproxy
-plugin@org.eclipse.ptp.rm.pbs.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.ui
-plugin@org.eclipse.ptp.rm.proxy.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.proxy.core
-plugin@org.eclipse.ptp.rm.slurm.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.core
-plugin@org.eclipse.ptp.rm.slurm.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.help
-plugin@org.eclipse.ptp.rm.slurm.proxy=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.proxy
-plugin@org.eclipse.ptp.rm.slurm.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.slurm.ui
-plugin@org.eclipse.ptp.rm.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.ui
-plugin@org.eclipse.ptp.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.ui
-plugin@org.eclipse.ptp.debug.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/debug/org.eclipse.ptp.debug.core
-plugin@org.eclipse.ptp.debug.sdm=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm
-plugin@org.eclipse.ptp.debug.sdm.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm.core
-plugin@org.eclipse.ptp.debug.sdm.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm.ui
-plugin@org.eclipse.ptp.debug.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/debug/org.eclipse.ptp.debug.ui
-plugin@org.eclipse.ptp.debug.sdm=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/debug/org.eclipse.ptp.debug.sdm
-plugin@org.eclipse.ptp.proxy=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.proxy
-plugin@org.eclipse.ptp.utils=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.utils
-plugin@org.eclipse.ptp.launch=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.launch
-plugin@org.eclipse.ptp.doc.user=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/doc/org.eclipse.ptp.doc.user
-
-! Services Plugins
-plugin@org.eclipse.ptp.services.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.services.core
-plugin@org.eclipse.ptp.services.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/core/org.eclipse.ptp.services.ui
-
-! Remote Tools Plugins
-plugin@org.eclipse.ptp.remotetools.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.core
-plugin@org.eclipse.ptp.remotetools.environment.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.core
-plugin@org.eclipse.ptp.remotetools.environment.generichost=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.generichost
-plugin@org.eclipse.ptp.remotetools.environment.launcher=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.launcher
-plugin@org.eclipse.ptp.remotetools.environment.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.environment.ui
-plugin@org.eclipse.ptp.remotetools.preferences=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.preferences
-plugin@org.eclipse.ptp.remotetools.utils=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/remotetools/org.eclipse.ptp.remotetools.utils
-
-! PLDT Plugins
-plugin@org.eclipse.ptp.pldt.common=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.common
-plugin@org.eclipse.ptp.pldt.doc.user=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.doc.user
-plugin@org.eclipse.ptp.pldt.lapi=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.lapi
-plugin@org.eclipse.ptp.pldt.mpi.analysis=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.mpi.analysis
-plugin@org.eclipse.ptp.pldt.mpi.analysis.cdt=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.mpi.analysis.cdt
-plugin@org.eclipse.ptp.pldt.mpi.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.mpi.core
-plugin@org.eclipse.ptp.pldt.openmp.analysis=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.openmp.analysis
-plugin@org.eclipse.ptp.pldt.openmp.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.openmp.core
-plugin@org.eclipse.ptp.pldt.openmp.ui.pv=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.openmp.ui.pv
-plugin@org.eclipse.ptp.pldt.upc=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.upc
-plugin@org.eclipse.ptp.pldt.wizards=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/pldt/org.eclipse.ptp.pldt.wizards
-
-! ETF Plugins
-plugin@org.eclipse.ptp.etfw=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw
-plugin@org.eclipse.ptp.etfw.tau=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau
-plugin@org.eclipse.ptp.etfw.tau.papiselect=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.papiselect
-plugin@org.eclipse.ptp.etfw.tau.perfdmf=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.perfdmf
-plugin@org.eclipse.ptp.etfw.tau.selinst=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.selinst
-plugin@org.eclipse.ptp.etfw.tau.selinstfort=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.selinstfort
-plugin@org.eclipse.ptp.etfw.toolopts=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.toolopts
-plugin@org.eclipse.ptp.etfw.feedback=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.feedback
-
-! RDT Plugins
-plugin@org.eclipse.ptp.rdt.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core
-plugin@org.eclipse.ptp.rdt.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.ui
-plugin@org.eclipse.ptp.rdt.doc.user=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.doc.user
-plugin@org.eclipse.ptp.rdt.managedbuilder.gnu.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.managedbuilder.gnu.ui
-plugin@org.eclipse.ptp.rdt.managedbuilder.xlc.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.managedbuilder.xlc.ui
-plugin@org.eclipse.ptp.rdt.managedbuilder.xlupc.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.managedbuilder.xlupc.ui
-plugin@org.eclipse.ptp.rdt.xlc=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.xlc
-plugin@org.eclipse.ptp.rdt.make.ui=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.make.ui
-plugin@org.eclipse.ptp.rdt.core.remotejars=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.remotejars
-plugin@org.eclipse.ptp.rdt.core.stubs=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.stubs
-plugin@org.eclipse.ptp.rdt.server.dstore=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.server.dstore
-
-! GEM Plugins
-plugin@org.eclipse.ptp.gem=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/gem/org.eclipse.ptp.gem
-plugin@org.eclipse.ptp.gem.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/gem/org.eclipse.ptp.gem.help
-
-! PPW Plugin
-plugin@org.eclipse.ptp.etfw.ppw=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/ppw/org.eclipse.ptp.etfw.ppw
-
-! SCI Plugin
-plugin@org.eclipse.ptp.sci=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/sci/org.eclipse.ptp.sci
-
-! Fragments
-fragment@org.eclipse.ptp.aix.ppc=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.aix.ppc
-fragment@org.eclipse.ptp.linux.ppc=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.linux.ppc
-fragment@org.eclipse.ptp.linux.x86=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.linux.x86
-fragment@org.eclipse.ptp.linux.x86_64=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.linux.x86_64
-fragment@org.eclipse.ptp.macosx.ppc=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.macosx.ppc
-fragment@org.eclipse.ptp.macosx.x86=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.macosx.x86
-fragment@org.eclipse.ptp.etfw.parallel=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.parallel
-
-! Tests
-plugin@org.eclipse.ptp.rdt.core.tests=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.tests
-
diff --git a/releng/org.eclipse.ptp.releng/master/build.properties b/releng/org.eclipse.ptp.releng/master/build.properties
deleted file mode 100644
index 3b9ad6e..0000000
--- a/releng/org.eclipse.ptp.releng/master/build.properties
+++ /dev/null
@@ -1,104 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2007 IBM Corporation 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:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-#####################
-# Parameters describing how and where to execute the build.
-# Typical users need only update the following properties:
-#    baseLocation - where things you are building against are installed
-#    bootclasspath - The base jars to compile against (typicaly rt.jar)
-#    configs - the list of {os, ws, arch} configurations to build.  
-#
-# Of course any of the settings here can be overridden by spec'ing 
-# them on the command line (e.g., -DbaseLocation=d:/eclipse
-
-############# CVS CONTROL ################
-# The CVS tag to use when fetching the map files from the repository
-mapVersionTag=ptp_4_1
-
-# The CVS tag to use when fetching elements to build.  By default the
-# builder will use whatever is in the maps.  Use this value to override
-# for example, when doing a nightly build out of HEAD
-# fetchTag=HEAD
-
-ptpTag=ptp_4_1
-photranTag=ptp_4_1
-
-############## BUILD / GENERATION CONTROL ################
-# The directory into which the build elements will be fetched and where
-# the build will take place.  buildDirectory and install should be the same
-# value.
-buildDirectory=build
-
-# Type of build.  Used in naming the build output.  Typically this value is
-# one of I, N, M, S, ...
-buildType=I
-
-# ID of the build.  Used in naming the build output.
-buildId=TestBuild
-
-# Label for the build.  Used in naming the build output
-buildLabel=${buildType}.${buildId}
-
-# Timestamp for the build.  Used in naming the build output
-timestamp=007
-
-# Base location for anything the build needs to compile against.  For example,
-# when building GEF, the baseLocation should be the location of a previously
-# installed Eclipse against which the GEF code will be compiled.
-baseLocation=
-
-#Os/Ws/Arch/nl of the eclipse specified by baseLocation
-#baseos
-#basews
-#basearch
-#basenl
-
-# The location underwhich all of the build output will be collected.  This will be
-# the root path in the resultant zip file.
-collPlace=eclipse
-
-# The directory  in which to execute zip of the ${collPlace} directory
-collBase=.
-
-# The list of {os, ws, arch} configurations to build.  This 
-# value is a '&' separated list of ',' separate triples.  For example, 
-#     configs=win32,win32,x86 & linux,motif,x86
-# By default the value is *,*,*
-configs= \
-	  aix,motif,ppc \
-    & linux,gtk,x86 \
-    & linux,gtk,x86_64 \
-    & linux,gtk,ppc \
-    & macosx,cocoa,ppc \
-    & macosx,cocoa,x86 \
-    & macosx,cocoa,x86_64 \
-    & win32,win32,x86
-
-outputUpdateJars=true
-groupConfigurations=true
-
-#Arguments to send to the zip executable
-zipargs=
-
-flattenDependencies=true
-
-############# JAVA COMPILER OPTIONS ##############
-# The location of the Java jars to compile against.  Typically the rt.jar for your JDK/JRE
-#bootclasspath=d:/ibm1.3.1/jre/lib/rt.jar
-
-javacDebugInfo=on
-javacVerbose=true
-javacFailOnError=false
-
-# The version of the source code
-javacSource=1.5
-
-# The version of the byte code targeted
-javacTarget=1.5
diff --git a/releng/org.eclipse.ptp.releng/master/customTargets.xml b/releng/org.eclipse.ptp.releng/master/customTargets.xml
deleted file mode 100644
index 77666e2..0000000
--- a/releng/org.eclipse.ptp.releng/master/customTargets.xml
+++ /dev/null
@@ -1,195 +0,0 @@
-<project name="Build specific targets and properties" default="noDefault" >
-
-<!-- ===================================================================== -->
-<!-- Run a given ${target} on all elements being built -->
-<!-- Add on <ant> task for each top level element being built. -->
-<!-- ===================================================================== -->
-<target name="allElements">
-	<ant antfile="${genericTargets}" target="${target}">
-		<property name="type" value="feature"/>
-		<property name="id" value="org.eclipse.ptp.master"/>
-	</ant>
-</target>
-
-<!-- ===================================================================== -->
-<!-- Targets to assemble the built elements for particular configurations  -->
-<!-- These generally call the generated assemble scripts (named in -->
-<!-- ${assembleScriptName}) but may also add pre and post processing -->
-<!-- Add one target for each root element and each configuration -->
-<!-- ===================================================================== -->
-
-<target name="assemble.org.eclipse.ptp.master.group.group.group">
-	<ant antfile="${assembleScriptName}" dir="${buildDirectory}">
-		<property name="archiveName" value="ptp-master-${ptpBranchVersion}-${buildId}.zip"/>
-	</ant>
-</target>
-	
-<!-- ===================================================================== -->
-<!-- Check out map files from correct repository -->
-<!-- Replace values for cvsRoot, package and mapVersionTag as desired. -->
-<!-- ===================================================================== -->
-<target name="getMapFiles">
-	<copy file="${builder}/../maps/ptp.map" todir="${buildDirectory}/maps"/>
-	<replace file="${buildDirectory}/maps/ptp.map">
-		<replacefilter token="@ptpTag@" value="${ptpTag}"/>
-	</replace>
-	<copy file="${builder}/../maps/photran.map" todir="${buildDirectory}/maps"/>
-	<replace file="${buildDirectory}/maps/photran.map">
-		<replacefilter token="@photranTag@" value="${photranTag}"/>
-	</replace>
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do before setup -->
-<!-- ===================================================================== -->
-<target name="preSetup">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do after setup but before starting the build proper -->
-<!-- ===================================================================== -->
-<target name="postSetup">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do before fetching the build elements -->
-<!-- ===================================================================== -->
-<target name="preFetch">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do after fetching the build elements -->
-<!-- ===================================================================== -->
-<target name="postFetch">
-	<condition property="patchesAvailable">
-		<available file="${builder}/patch.xml"/>
-	</condition>
-	<antcall target="applyPatches"/>
-</target>
-
-<target name="applyPatches" if="patchesAvailable">
-	<ant antfile="${builder}/patch.xml"/>
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do before generating the build scripts. -->
-<!-- ===================================================================== -->
-<target name="preGenerate">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do after generating the build scripts. -->
-<!-- ===================================================================== -->
-<target name="postGenerate">
-</target>
-
-
-<!-- ===================================================================== -->
-<!-- Steps to do before running the build.xmls for the elements being built. -->
-<!-- ===================================================================== -->
-<target name="preProcess">
-	<replace dir="${buildDirectory}/plugins" value="${timestamp}" token="@build@">
-		<include name="**/about.mappings" />
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.aix.ppc/BUILD">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.linux.ppc/BUILD">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.linux.x86/BUILD">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.linux.x86_64/BUILD">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.macosx.ppc/BUILD">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.macosx.x86/BUILD">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.debug.sdm/configure">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.debug.sdm/configure.in">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.proxy/configure">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.proxy/configure.in">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.utils/configure">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.utils/configure.in">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.rm.ibm.ll.proxy/configure">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.rm.ibm.ll.proxy/configure.in">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.rm.ibm.pe.proxy/configure">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.rm.ibm.pe.proxy/configure.in">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.rm.slurm.proxy/configure">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-	<replace file="${buildDirectory}/plugins/org.eclipse.ptp.rm.slurm.proxy/configure.in">
-		<replacefilter token="@buildVersion@" value="${ptpBranchVersion}.${timestamp}"/>
-	</replace>
-
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do after running the build.xmls for the elements being built. -->
-<!-- ===================================================================== -->
-<target name="postProcess">
-</target>
-
-
-<!-- ===================================================================== -->
-<!-- Steps to do before running assemble. -->
-<!-- ===================================================================== -->
-<target name="preAssemble">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do after  running assemble. -->
-<!-- ===================================================================== -->
-<target name="postAssemble">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do after the build is done. -->
-<!-- ===================================================================== -->
-<target name="postBuild">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do to test the build results -->
-<!-- ===================================================================== -->
-<target name="test">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Steps to do to publish the build results -->
-<!-- ===================================================================== -->
-<target name="publish">
-</target>
-
-<!-- ===================================================================== -->
-<!-- Default target                                                        -->
-<!-- ===================================================================== -->
-<target name="noDefault">
-	<echo message="You must specify a target when invoking this file" />
-</target>
-
-</project>
diff --git a/releng/org.eclipse.ptp.releng/pack.properties b/releng/org.eclipse.ptp.releng/pack.properties
deleted file mode 100644
index 1cb5a5e..0000000
--- a/releng/org.eclipse.ptp.releng/pack.properties
+++ /dev/null
@@ -1 +0,0 @@
-pack200.default.args=-E4
diff --git a/releng/org.eclipse.ptp.releng/ptpbuild b/releng/org.eclipse.ptp.releng/ptpbuild
deleted file mode 100644
index 373c1b8..0000000
--- a/releng/org.eclipse.ptp.releng/ptpbuild
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/sh
-#
-# ptpbuild wrapper script
-#
-# Usage: ptpbuild [-t tag] [-d build_dir] [build_args]
-#
-# where
-#
-# tag is the CVS tag used to check out the releng project (default HEAD)
-# build_dir is the location that the build will take place
-# build_args are any arguments you want to pass to the build script
-#
-# set up anything environment specific that needs to be done before
-# launching the build script in the releng project
-
-LANG=en_US
-TAG=HEAD
-CDT_TAG=HEAD
-
-# main staging directory
-BUILD_DIR=/opt/public/download-staging.priv/tools/ptp/releng
-
-args=`getopt c:d:t: $*`
-
-if [ $? != 0 ]; then
-	echo "usage: ptpbuild [-t tag] [-c cdt_tag] [-d build_dir] [build_args]"
-	exit 1
-fi
-
-set -- $args
-for i
-do
-	case "$i"
-	in
-	-c) CDT_TAG="$2"; shift; shift;;
-	-d) BUILD_DIR="$2"; shift; shift;;
-	-t) TAG="$2"; shift; shift;;
-	--) shift; break;;
-	esac
-done
-
-BUILD_LOG=$BUILD_DIR/ptpbuild_${TAG}_`date +%Y%m%d%H%M`.log
-
-touch $BUILD_LOG
-chmod a+r $BUILD_LOG
-
-{
-# create the releng staging directory and go there
-mkdir -p $BUILD_DIR && cd $BUILD_DIR
-
-# remove the old build
-rm -fr org.eclipse.ptp_${TAG}
-
-# Check out the releng project
-cvs -d /cvsroot/tools co -r $TAG -d org.eclipse.ptp_${TAG} org.eclipse.ptp/releng/org.eclipse.ptp.releng
-
-# run the main script
-cd org.eclipse.ptp_${TAG}
-sh build.sh $*
-
-} >$BUILD_LOG 2>&1
-
-if grep -q 'BUILD FAILED' $BUILD_LOG; then
-	echo "BUILD FAILED. See $BUILD_LOG for details."
-fi
-
-exit 0
diff --git a/releng/org.eclipse.ptp.releng/update_versions b/releng/org.eclipse.ptp.releng/update_versions
deleted file mode 100644
index f923a61..0000000
--- a/releng/org.eclipse.ptp.releng/update_versions
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/sh
-#
-# script to update PTP versions
-#
-# Usage: update_versions ptp_version photran_version
-#
-# ptp_version - new version string for PTP (e.g. "3.0.1")
-# photran_version - new version string for Photran (e.g. "5.0.1")
-#
-# Note: a "qualifier" suffix will automatically be added to the version where appropriate
-#
-
-TMP_DIR=/tmp
-
-if [ $# -lt 2 ]; then
-	echo "usage: update_versions ptp_version photran_version"
-	exit 1
-fi
-
-ptp_version=$1
-photran_version=$2
-
-PTP_FEATURES="\
-	org.eclipse.ptp-feature \
-	org.eclipse.ptp.core-feature \
-	org.eclipse.ptp.etfw-feature \
-	org.eclipse.ptp.etfw.ppw-feature \
-	org.eclipse.ptp.etfw.tau-feature \
-	org.eclipse.ptp.etfw.tau.fortran-feature \
-	org.eclipse.ptp.external-feature \
-	org.eclipse.ptp.gem-feature \
-	org.eclipse.ptp.master \
-	org.eclipse.ptp.pldt-feature \
-	org.eclipse.ptp.pldt.lapi-feature \
-	org.eclipse.ptp.pldt.upc-feature \
-	org.eclipse.ptp.rdt-feature \
-	org.eclipse.ptp.rdt.remotejars-feature \
-	org.eclipse.ptp.rdt.remotetools-feature \
-	org.eclipse.ptp.rdt.xlc-feature \
-	org.eclipse.ptp.remote-feature \
-	org.eclipse.ptp.remote.remotetools-feature \
-	org.eclipse.ptp.remote.rse-feature \
-	org.eclipse.ptp.remotetools-feature \
-	org.eclipse.ptp.rm.ibm.ll-feature \
-	org.eclipse.ptp.rm.ibm.pe-feature \
-	org.eclipse.ptp.rm.mpich2-feature \
-	org.eclipse.ptp.rm.openmpi-feature \
-	org.eclipse.ptp.rm.pbs-feature \
-	org.eclipse.ptp.rm.slurm-feature \
-	org.eclipse.ptp.sci-feature \
-	org.eclipse.ptp.sdm-feature \
-	org.eclipse.ptp.services-feature \
-	org.eclipse.ptp.utils-feature"
-	
-PHOTRAN_FEATURES="\
-	org.eclipse.photran-feature \
-	org.eclipse.photran.intel-feature \
-	org.eclipse.photran.xlf-feature \
-	org.eclipse.rephraserengine-feature"
-
-PTP_PLUGINS="\
-	org.eclipse.ptp.aix.ppc \
-	org.eclipse.ptp.linux.ppc \
-	org.eclipse.ptp.linux.x86 \
-	org.eclipse.ptp.linux.x86_64 \
-	org.eclipse.ptp.macosx.ppc \
-	org.eclipse.ptp.macosx.x86 \
-	org.eclipse.ptp"
-	
-PTP_C_PROJECTS="\
-	org.eclipse.ptp.debug.sdm \
-	org.eclipse.ptp.proxy \
-	org.eclipse.ptp.rm.ibm.pe.proxy \
-	org.eclipse.ptp.rm.ibm.ll.proxy \
-	org.eclipse.ptp.rm.slurm.proxy \
-	org.eclipse.ptp.utils"
-	
-update_feature() {
-	sed -e "s/version=\"[0-9]\.[0-9]\.[0-9]\.qualifier\"/version=\"$2\.qualifier\"/" < $1/feature.xml > $TMP_DIR/${1}_feature.xml
-	mv $TMP_DIR/${1}_feature.xml $1/feature.xml
-}
-
-update_manifest() {
-	sed -e "s/Bundle-Version: *[0-9]\.[0-9]\.[0-9]\.qualifier/Bundle-Version: $2.qualifier/" < $1/META-INF/MANIFEST.MF > $TMP_DIR/${1}_MANIFEST.MF
-	mv $TMP_DIR/${1}_MANIFEST.MF $1/META-INF/MANIFEST.MF
-}
-
-for feature in $PTP_FEATURES; do
-	echo "Updating $feature..."
-	update_feature $feature $ptp_version
-done
-
-for plugin in $PTP_PLUGINS; do
-	echo "Updating $plugin..."
-	update_manifest $plugin $ptp_version
-done
-
-for project in $PTP_C_PROJECTS; do
-	echo "Updating $project..."
-	update_manifest $project $ptp_version
-done
-
-for feature in $PHOTRAN_FEATURES; do
-	echo "Updating $feature..."
-	update_feature $feature $photran_version
-done
-
-echo "Updating org.eclipse.ptp.releng..."
-sed -e "s/<property name=\"ptpBranchVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"ptpBranchVersion\" value=\"$ptp_version\"\/>/" \
-	-e "s/<property name=\"photranBranchVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"photranBranchVersion\" value=\"$photran_version\"\/>/" \
-	< org.eclipse.ptp.releng/build.xml > $TMP_DIR/org.eclipse.ptp.releng_build.xml
-mv $TMP_DIR/org.eclipse.ptp.releng_build.xml org.eclipse.ptp.releng/build.xml
-
-echo "Updating org.eclipse.ptp.rdt.core.remotejars.."
-sed -e "s/<property name=\"serverVersion\" value=\"[0-9]\.[0-9]\.[0-9]\"\/>/<property name=\"serverVersion\" value=\"$ptp_version\"\/>/" \
-	< org.eclipse.ptp.rdt.core.remotejars/build.xml > $TMP_DIR/org.eclipse.ptp.rdt.core.remotejars_build.xml
-mv $TMP_DIR/org.eclipse.ptp.rdt.core.remotejars_build.xml org.eclipse.ptp.rdt.core.remotejars/build.xml
-
-exit 0
diff --git a/releng/org.eclipse.ptp.releng/web/site.css b/releng/org.eclipse.ptp.releng/web/site.css
deleted file mode 100644
index 62c6f9f..0000000
--- a/releng/org.eclipse.ptp.releng/web/site.css
+++ /dev/null
@@ -1,12 +0,0 @@
-<STYLE type="text/css">
-td.spacer {padding-bottom: 10px; padding-top: 10px;}
-.title { font-family: sans-serif; color: #99AACC;}
-.bodyText { font-family: sans-serif; font-size: 9pt; color:#000000;  }
-.sub-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white;}
-.log-text {font-family: sans-serif; font-style: normal; font-weight: lighter; font-size: 8pt; color:black;}
-.big-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white; border-top:10px solid white;}
-.light-row {background:#FFFFFF}
-.dark-row {background:#EEEEFF}
-.header {background:#99AADD}
-#indent {word-wrap : break-word;width :300px;text-indent:10px;}
-</STYLE>
diff --git a/releng/org.eclipse.ptp.releng/web/site.xsl b/releng/org.eclipse.ptp.releng/web/site.xsl
deleted file mode 100644
index 574006f..0000000
--- a/releng/org.eclipse.ptp.releng/web/site.xsl
+++ /dev/null
@@ -1,214 +0,0 @@
-<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl="urn:schemas-microsoft-com:xslt">
-<xsl:output method="html" encoding="UTF-8"/>
-<xsl:key name="cat" match="category" use="@name"/>
-<xsl:template match="/">
-<xsl:for-each select="site">
-	<html>
-	<head>
-	<title>PTP Update Site</title>
-	<style>@import url("web/site.css");</style>
-	</head>
-	<body>
-	<h1 class="title">PTP Update Site</h1>
-	<p class="bodyText"><xsl:value-of select="description"/></p>
-	<table width="100%" border="0" cellspacing="1" cellpadding="2">
-	<xsl:for-each select="category-def">
-		<xsl:sort select="@label" order="ascending" case-order="upper-first"/>
-		<xsl:sort select="@name" order="ascending" case-order="upper-first"/>
-	<xsl:if test="count(key('cat',@name)) != 0">
-			<tr class="header">
-				<td class="sub-header" width="30%">
-					<xsl:value-of select="@name"/>
-				</td>
-				<td class="sub-header" width="70%">
-					<xsl:value-of select="@label"/>
-				</td>
-			</tr>
-			<xsl:for-each select="key('cat',@name)">
-			<xsl:sort select="ancestor::feature//@version" order="ascending"/>
-			<xsl:sort select="ancestor::feature//@id" order="ascending" case-order="upper-first"/>
-			<tr>
-				<xsl:choose>
-				<xsl:when test="(position() mod 2 = 1)">
-					<xsl:attribute name="class">dark-row</xsl:attribute>
-				</xsl:when>
-				<xsl:otherwise>
-					<xsl:attribute name="class">light-row</xsl:attribute>
-				</xsl:otherwise>
-				</xsl:choose>
-				<td class="log-text" id="indent">
-						<xsl:choose>
-						<xsl:when test="ancestor::feature//@label">
-							<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@label"/></a>
-							<br/>
-							<div id="indent">
-							(<xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/>)
-							</div>
-						</xsl:when>
-						<xsl:otherwise>
-						<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/></a>
-						</xsl:otherwise>
-						</xsl:choose>
-						<br />
-				</td>
-				<td>
-					<table>
-						<xsl:if test="ancestor::feature//@os">
-							<tr><td class="log-text" id="indent">Operating Systems:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@os"/></td>
-							</tr>
-						</xsl:if>
-						<xsl:if test="ancestor::feature//@ws">
-							<tr><td class="log-text" id="indent">Windows Systems:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@ws"/></td>
-							</tr>
-						</xsl:if>
-						<xsl:if test="ancestor::feature//@nl">
-							<tr><td class="log-text" id="indent">Languages:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@nl"/></td>
-							</tr>
-						</xsl:if>
-						<xsl:if test="ancestor::feature//@arch">
-							<tr><td class="log-text" id="indent">Architecture:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@arch"/></td>
-							</tr>
-						</xsl:if>
-					</table>
-				</td>
-			</tr>
-			</xsl:for-each>
-			<tr><td class="spacer"><br/></td><td class="spacer"><br/></td></tr>
-		</xsl:if>
-	</xsl:for-each>
-	<xsl:if test="count(feature)  &gt; count(feature/category)">
-	<tr class="header">
-		<td class="sub-header" colspan="2">
-		Uncategorized
-		</td>
-	</tr>
-	</xsl:if>
-	<xsl:choose>
-	<xsl:when test="function-available('msxsl:node-set')">
-	   <xsl:variable name="rtf-nodes">
-		<xsl:for-each select="feature[not(category)]">
-			<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
-			<xsl:sort select="@version" order="ascending" />
-			<xsl:value-of select="."/>
-			<xsl:copy-of select="." />
-		</xsl:for-each>
-	   </xsl:variable>
-	   <xsl:variable name="myNodeSet" select="msxsl:node-set($rtf-nodes)/*"/>
-	<xsl:for-each select="$myNodeSet">
-	<tr>
-		<xsl:choose>
-		<xsl:when test="position() mod 2 = 1">
-		<xsl:attribute name="class">dark-row</xsl:attribute>
-		</xsl:when>
-		<xsl:otherwise>
-		<xsl:attribute name="class">light-row</xsl:attribute>
-		</xsl:otherwise>
-		</xsl:choose>
-		<td class="log-text" id="indent">
-			<xsl:choose>
-			<xsl:when test="@label">
-				<a href="{@url}"><xsl:value-of select="@label"/></a>
-				<br />
-				<div id="indent">
-				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
-				</div>
-			</xsl:when>
-			<xsl:otherwise>
-				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
-			</xsl:otherwise>
-			</xsl:choose>
-			<br /><br />
-		</td>
-		<td>
-			<table>
-				<xsl:if test="@os">
-					<tr><td class="log-text" id="indent">Operating Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@ws">
-					<tr><td class="log-text" id="indent">Windows Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@nl">
-					<tr><td class="log-text" id="indent">Languages:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@arch">
-					<tr><td class="log-text" id="indent">Architecture:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
-					</tr>
-				</xsl:if>
-			</table>
-		</td>
-	</tr>
-	</xsl:for-each>
-	</xsl:when>
-	<xsl:otherwise>
-	<xsl:for-each select="feature[not(category)]">
-	<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
-	<xsl:sort select="@version" order="ascending" />
-	<tr>
-		<xsl:choose>
-		<xsl:when test="count(preceding-sibling::feature[not(category)]) mod 2 = 1">
-		<xsl:attribute name="class">dark-row</xsl:attribute>
-		</xsl:when>
-		<xsl:otherwise>
-		<xsl:attribute name="class">light-row</xsl:attribute>
-		</xsl:otherwise>
-		</xsl:choose>
-		<td class="log-text" id="indent">
-			<xsl:choose>
-			<xsl:when test="@label">
-				<a href="{@url}"><xsl:value-of select="@label"/></a>
-				<br />
-				<div id="indent">
-				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
-				</div>
-			</xsl:when>
-			<xsl:otherwise>
-				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
-			</xsl:otherwise>
-			</xsl:choose>
-			<br /><br />
-		</td>
-		<td>
-			<table>
-				<xsl:if test="@os">
-					<tr><td class="log-text" id="indent">Operating Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@ws">
-					<tr><td class="log-text" id="indent">Windows Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@nl">
-					<tr><td class="log-text" id="indent">Languages:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@arch">
-					<tr><td class="log-text" id="indent">Architecture:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
-					</tr>
-				</xsl:if>
-			</table>
-		</td>
-	</tr>
-	</xsl:for-each>
-	</xsl:otherwise>
-	</xsl:choose>
-	</table>
-	</body>
-	</html>
-</xsl:for-each>
-</xsl:template>
-</xsl:stylesheet>
