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 7c44467..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +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.core.tests.harness;bundle-version="3.5.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 99a7365..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 6b5f26d..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/FileStoreTests.java
+++ /dev/null
@@ -1,147 +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 org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.tests.harness.CoreTest;
-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 CoreTest {
-	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 (CoreException e) {
-			fail("2.0", e);
-		}
-		
-		for (int i = 0; i < 5; i++) {
-			assertFalse(store1.fetchInfo().exists());
-			try {
-				store1.mkdir(EFS.NONE, null);
-			} catch (CoreException e) {
-				fail("3.0", e);
-			}
-			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) {
-				fail("4.0", e);
-			}
-			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) {
-				fail("5.0", e);
-			}
-	
-			try {
-				store2.delete(EFS.NONE, null);
-			} catch (CoreException e) {
-				fail("6.0", e);
-			}
-			assertFalse(store2.fetchInfo().exists());
-	
-			try {
-				store1.delete(EFS.NONE, null);
-			} catch (CoreException e) {
-				fail("7.0", e);
-			}
-			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 46f7159..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteConnectionTests.java
+++ /dev/null
@@ -1,109 +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.core.IRemoteConnection;
-import org.eclipse.ptp.remote.core.IRemoteConnectionManager;
-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$
-				assertTrue(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();
-		}
-	}
-
-	/* (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/RemoteCopyTests.java b/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteCopyTests.java
deleted file mode 100644
index da22130..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/core/tests/RemoteCopyTests.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 RemoteCopyTests 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/FileManagerTestSuite.java b/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/remote/core/tests/suite/FileManagerTestSuite.java
deleted file mode 100644
index b0c6a94..0000000
--- a/core/org.eclipse.ptp.remote.core.tests/src/org/eclipse/ptp/remote/core/tests/suite/FileManagerTestSuite.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 FileManagerTestSuite {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(FileManagerTestSuite.class.getName());
-		
-		suite.addTestSuite(FileStoreTests.class);
-		suite.addTestSuite(RemoteConnectionTests.class);
-		suite.addTestSuite(SFTPTests.class);
-		return suite;
-	}
-
-}
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/build.sh b/releng/org.eclipse.ptp.releng/build.sh
deleted file mode 100644
index da9788b..0000000
--- a/releng/org.eclipse.ptp.releng/build.sh
+++ /dev/null
@@ -1,34 +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
-export PATH=/opt/public/common/ibm-java2-ppc-50/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:pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse \
-	checkout -r R35_RC2 org.eclipse.releng.basebuilder
-cd ..
-
-# Let's go!
-java -jar tools/org.eclipse.releng.basebuilder/plugins/org.eclipse.equinox.launcher.jar \
-	-ws gtk -arch ppc -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 9c111bc..0000000
--- a/releng/org.eclipse.ptp.releng/build.xml
+++ /dev/null
@@ -1,769 +0,0 @@
-<project name="PTP" default="nightly">
-	<target name="hi">
-		<echo message="${eclipse.home}"/>
-	</target>
-	
-	<target name="build" depends="zips,test"/>
-	<target name="nightly" depends="tag,zips,sign,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/>
-		<property name="eclipseDist" value="/home/data/httpd/download.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/eclipse-SDK-3.5-linux-gtk-ppc.tar.gz"/>
-		<property name="cdtDist" value="/home/data/httpd/download.eclipse.org/tools/cdt/builds/6.0.2/I.I201001290609/cdt-master-6.0.2-I201001290609.zip"/>
-		<property name="mylynDist" value="/home/data/httpd/download.eclipse.org/tools/mylyn/update/mylyn-3.3.3-e3.4.zip"/>
-		<property name="rseDist" value="/home/data/httpd/download.eclipse.org/dsdp/tm/downloads/drops/R-3.1.2-201002152323/RSE-SDK-3.1.2.zip"/>
-		<property name="tauJars" value="${user.home}/tau_jars.zip"/>
-		<property name="eclipseRelease" value="galileo"/>
-		<property name="ptpBranchVersion" value="3.0.2"/>
-		<!--property name="photranBranchVersion" value="5.0.1"/-->
-		<property name="timestamp" value="${DSTAMP}${TSTAMP}" />
-		<property name="forceContextQualifier" value="${timestamp}"/>
-		<property name="buildingOSGi" value="true"/>
-		<property name="buildDirectory" value="${basedir}/results"/>
-		<property name="copyToDir" value="/home/www/tools/ptp/builds/${eclipseRelease}"/>
-		<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="buildType" value="I" />
-		<property name="buildId" value="${buildType}${timestamp}"/>
-		<property name="zipsdir" value="${buildDirectory}/${buildType}.${buildId}"/>
-		<property name="ptpMasterFile" value="ptp-master-${ptpBranchVersion}-${buildId}.zip"/>
-		<!--property name="photranMasterFile" value="photran-master-${photranBranchVersion}-${buildId}.zip"/-->
-		<property name="eclipseTest" value="org.eclipse.test_3.2.0"/>
-		<property name="mailto" value="g.watson@computer.org"/>
-		<property name="eclipseRoot" value=":pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse"/>
-		<property name="baseos" value="${osgi.os}"/>
-		<property name="basews" value="${osgi.ws}"/>
-		<property name="basearch" value="${osgi.arch}"/>
-		<property name="ptpTagBranch" value="-r ptp_3_0"/>
-		<property name="photranTagBranch" value="-r photran_5_0"/>
-		<property name="tagname" value="v${timestamp}"/>
-		<property name="testReports" value="${zipsdir}/testReports"/>
-		<property name="junit-report-output" value="${testReports}"/>
-		<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="**/*.bin.log"/>
-			<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}/${ptpMasterFile}" todir="${buildDirectory}"/>
-		<!--move file="${zipsdir}/${photranMasterFile}" todir="${buildDirectory}"/-->
-		
-		<!--unzip src="${buildDirectory}/${photranMasterFile}" dest="${buildDirectory}/site"/-->
-		<unzip src="${buildDirectory}/${ptpMasterFile}" 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="buildsite.xml" tofile="${buildDirectory}/site/eclipse/site.xml"/>
-		<replace file="${buildDirectory}/site/eclipse/site.xml">
-			<replacefilter token="@timeStamp@" value="${timestamp}"/>
-		</replace>
-		<copy file="pack.properties" todir="${buildDirectory}/site/eclipse"/>
-
-		<zip destfile="${zipsdir}/${ptpMasterFile}"
-			basedir="${buildDirectory}/site/eclipse"/>
-	</target>
-
-	<target name="sign" depends="init" unless="hasErrors">
-		<exec executable="sign">
-			<arg value="${buildDirectory}/${buildType}.${buildId}/${ptpMasterFile}"/>
-			<arg value="nomail"/>
-			<arg value="${buildDirectory}/signed"/>
-		</exec>
-		<waitfor maxwait="60" maxwaitunit="minute">
-			<available file="${buildDirectory}/signed/${ptpMasterFile}"/>
-		</waitfor>
-		<move file="${buildDirectory}/signed/${ptpMasterFile}" 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}/${buildType}.${buildId}"/>
-		<copy todir="${copyToDir}/${buildType}.${buildId}">
-			<fileset dir="${buildDirectory}/${buildType}.${buildId}"/>
-		</copy>
-		<chmod perm="g+w" dir="${copyToDir}/${buildType}.${buildId}">
-			<dirset dir="${copyToDir}/${buildType}.${buildId}"/>
-		</chmod>
-		<!-- Create symlink to latest build -->
-		<delete file="${copyToDir}/latest" followsymlinks="false" failonerror="false"/>
-		<!--symlink action="delete" link="${copyToDir}/latest" failonerror="false"/-->
-		<symlink link="${copyToDir}/latest" resource="${copyToDir}/${buildType}.${buildId}" overwrite="true"/>
-		<delete file="${copyToDir}/ptp-master-${ptpBranchVersion}-latest.zip" followsymlinks="false" failonerror="false"/>
-		<!--symlink action="delete" link="${copyToDir}/ptp-master-${ptpBranchVersion}-latest.zip" failonerror="false"/-->
-		<symlink link="${copyToDir}/ptp-master-${ptpBranchVersion}-latest.zip" resource="${copyToDir}/${buildType}.${buildId}/${ptpMasterFile}" overwrite="true"/>
-		<delete file="${copyToDir}/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="${copyToDir}/rdt-server-unix-${ptpBranchVersion}-latest.tar" resource="${copyToDir}/${buildType}.${buildId}/rdt-server-unix-${ptpBranchVersion}.tar" overwrite="true"/>
-	</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.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.services-feature"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/releng/org.eclipse.ptp.isp-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.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.proxy"/>
-			<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.slurm.core"/>
-			<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/org.eclipse.ptp.remotetools.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.remotetools.environment.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.remotetools.environment.generichost"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.remotetools.environment.launcher"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.remotetools.environment.ui"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.remotetools.preferences"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/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.help"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.common"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.help"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.lapi"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.mpi.analysis"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>			
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.mpi.analysis.cdt"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.mpi.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.openmp.analysis"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.openmp.core"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.openmp.ui.pv"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/org.eclipse.ptp.pldt.upc"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/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/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.services"/>
-			<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.doc.user"/>
-			<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.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/isp/org.eclipse.ptp.isp"/>
-			<param name="tagbranch" value="${ptpTagBranch}"/>
-		</antcall>		
-		<antcall target="tagone">
-			<param name="tagmodule" value="org.eclipse.ptp/tools/isp/org.eclipse.ptp.isp.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.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.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.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.text"/>
-			<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 6995179..0000000
--- a/releng/org.eclipse.ptp.releng/buildsite.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-   <description url="http://download.eclipse.org/tools/ptp/releases/galileo">
-      Parallel Tools Platform Galileo Update Site
-   </description>
-   <feature url="features/org.eclipse.ptp_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.core_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp.core" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.services_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.services" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.utils_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.utils" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.remotetools_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.remotetools" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.ibm.ll_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp.rm.ibm.ll" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.ibm.pe_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp.rm.ibm.pe" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.slurm_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp.rm.slurm" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.pbs_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp.rm.pbs" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.remote.remotetools_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.remote.remotetools" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.remote.rse_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.remote.rse" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.debug.sdm_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp.debug.sdm" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.external_3.0.2.@timeStamp@.jar" id="org.eclipse.ptp.external" version="3.0.2.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.remote_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.remote" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.mpich2_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.rm.mpich2" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rm.openmpi_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.rm.openmpi" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.pldt_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.pldt" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.pldt.lapi_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.pldt.lapi" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.pldt.upc_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.pldt.upc" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.etfw_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.etfw" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.etfw.tau_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.etfw.tau" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.isp_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.isp" version="3.0.1.@timeStamp@">
-      <category name="Parallel Tools Platform"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rdt_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.rdt" version="3.0.1.@timeStamp@">
-      <category name="Remote Development Tools"/>
-   </feature>
-   <feature url="features/org.eclipse.ptp.rdt.xlc_3.0.1.@timeStamp@.jar" id="org.eclipse.ptp.rdt.xlc" version="3.0.1.@timeStamp@">
-      <category name="Remote Development Tools"/>
-   </feature>
-   <feature url="features/org.eclipse.photran_5.0.1.@timeStamp@.jar" id="org.eclipse.photran" version="5.0.1.@timeStamp@">
-      <category name="Fortran Development Tools (Photran)"/>
-   </feature>
-   <feature url="features/org.eclipse.photran.intel_5.0.1.@timeStamp@.jar" id="org.eclipse.photran.intel" version="5.0.1.@timeStamp@" os="linux">
-      <category name="Fortran Development Tools (Photran)"/>
-   </feature>
-   <feature url="features/org.eclipse.photran.xlf_5.0.1.@timeStamp@.jar" id="org.eclipse.photran.xlf" version="5.0.1.@timeStamp@">
-      <category name="Fortran Development Tools (Photran)"/>
-   </feature>
-   <feature url="features/org.eclipse.rephraserengine_1.0.1.@timeStamp@.jar" id="org.eclipse.rephraserengine" version="1.0.1.@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/maps/photran.map b/releng/org.eclipse.ptp.releng/maps/photran.map
deleted file mode 100644
index 47ec7a9..0000000
--- a/releng/org.eclipse.ptp.releng/maps/photran.map
+++ /dev/null
@@ -1,33 +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.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
-
-! 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 3332013..0000000
--- a/releng/org.eclipse.ptp.releng/maps/ptp.map
+++ /dev/null
@@ -1,143 +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
-feature@org.eclipse.ptp.isp=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/releng/org.eclipse.ptp.isp-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
-
-! 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
-
-! 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.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.proxy=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rms/org.eclipse.ptp.rm.pbs.proxy
-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.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.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.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/doc/org.eclipse.ptp.help
-
-! 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/org.eclipse.ptp.remotetools.core
-plugin@org.eclipse.ptp.remotetools.environment.core=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/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/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/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/org.eclipse.ptp.remotetools.environment.ui
-plugin@org.eclipse.ptp.remotetools.preferences=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/org.eclipse.ptp.remotetools.preferences
-plugin@org.eclipse.ptp.remotetools.utils=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/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/org.eclipse.ptp.pldt.common
-plugin@org.eclipse.ptp.pldt.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/org.eclipse.ptp.pldt.help
-plugin@org.eclipse.ptp.pldt.lapi=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/org.eclipse.ptp.pldt.lapi
-plugin@org.eclipse.ptp.pldt.mpi.analysis=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/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/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/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/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/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/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/org.eclipse.ptp.pldt.upc
-plugin@org.eclipse.ptp.pldt.wizards=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/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.jars=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/etfw/org.eclipse.ptp.etfw.tau.jars
-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.services=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.services
-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.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.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
-
-
-! ISP Plugins
-plugin@org.eclipse.ptp.isp=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/isp/org.eclipse.ptp.isp
-plugin@org.eclipse.ptp.isp.help=@ptpTag@,:pserver:anonymous@dev.eclipse.org:/cvsroot/tools,,org.eclipse.ptp/tools/isp/org.eclipse.ptp.isp.help
-
-! 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 1a1b64b..0000000
--- a/releng/org.eclipse.ptp.releng/master/build.properties
+++ /dev/null
@@ -1,100 +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_3_0
-
-# 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_3_0
-photranTag=photran_5_0
-
-############## 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,carbon,ppc \
-    & win32,win32,x86
-
-outputUpdateJars=true
-groupConfigurations=true
-
-#Arguments to send to the zip executable
-zipargs=
-
-############# 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 2e97961..0000000
--- a/releng/org.eclipse.ptp.releng/master/customTargets.xml
+++ /dev/null
@@ -1,169 +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>
-	<!--ant antfile="${genericTargets}" target="${target}">
-		<property name="type" value="feature"/>
-		<property name="id" value="org.eclipse.photran.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>
-	
-<!--target name="assemble.org.eclipse.photran.master.group.group.group">
-	<ant antfile="${assembleScriptName}" dir="${buildDirectory}">
-		<property name="archiveName" value="photran-master-${photranBranchVersion}-${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>
-	<unzip src="${tauJars}" dest="${buildDirectory}/plugins/org.eclipse.ptp.etfw.tau.jars"/>
-	<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>
-</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/photran_buildsite.xml b/releng/org.eclipse.ptp.releng/photran_buildsite.xml
deleted file mode 100644
index 313e902..0000000
--- a/releng/org.eclipse.ptp.releng/photran_buildsite.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-	<description>
-		Photran (Fortran Development Tools)
-	</description>
-   	<category-def name="Photran Base Distribution" label="Photran (Fortran Development Tools)"/>
-	<category-def name="Fortran Compiler Support" label="Fortran Compiler Support">
-		<description>
-			Optional features adding error parsers and managed build toolchains for various vendors&apos; Fortran compilers
-		</description>
-    </category-def>
-	<feature id="org.eclipse.photran" url="http://www.eclipse.org/downloads/download.php?file=/tools/ptp/photran/releases/galileo/features/org.eclipse.photran_5.0.0.@timeStamp@.jar&amp;r=1" version="5.0.0.@timeStamp@">
-		<category name="Photran Base Distribution"/>
-	</feature>
-	<feature id="org.eclipse.photran.intel" url="http://www.eclipse.org/downloads/download.php?file=/tools/ptp/photran/releases/galileo/features/org.eclipse.photran.intel_5.0.0.@timeStamp@.jar&amp;r=1" version="5.0.0.@timeStamp@" os="linux">
-		<category name="Fortran Compiler Support"/>
-	</feature>
-	<feature id="org.eclipse.photran.xlf" url="http://www.eclipse.org/downloads/download.php?file=/tools/ptp/photran/releases/galileo/features/org.eclipse.photran.xlf_5.0.0.@timeStamp@.jar&amp;r=1" version="5.0.0.@timeStamp@">
-		<category name="Fortran Compiler Support"/>
-	</feature>
-</site>
diff --git a/releng/org.eclipse.ptp.releng/ptpbuild b/releng/org.eclipse.ptp.releng/ptpbuild
deleted file mode 100644
index c5b3955..0000000
--- a/releng/org.eclipse.ptp.releng/ptpbuild
+++ /dev/null
@@ -1,85 +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=ptp_3_0
-CDT_TAG=cdt_6_0
-
-# 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
-
-{
-# 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
-export CVSROOT=:pserver:anonymous@dev.eclipse.org:/cvsroot/tools
-cvs 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 RDT server packages
-cd results/plugins
-
-# Check out rdt.core.remotejars, rdt.core.stubs, cdt.core, cdt.core.lrparser, cdt.core.lrparser.xlc for source
-export CVSROOT=:pserver:anonymous@dev.eclipse.org:/cvsroot/tools
-cvs co -r $TAG -d org.eclipse.ptp.rdt.core.remotejars org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.remotejars
-cvs co -r $TAG -d org.eclipse.ptp.rdt.core.stubs org.eclipse.ptp/rdt/org.eclipse.ptp.rdt.core.stubs
-cvs co -r $CDT_TAG -d org.eclipse.cdt.core org.eclipse.cdt/all/org.eclipse.cdt.core
-cvs co -r $CDT_TAG -d org.eclipse.cdt.core.lrparser org.eclipse.cdt/lrparser/org.eclipse.cdt.core.lrparser
-cvs co -r $CDT_TAG -d org.eclipse.cdt.core.lrparser.xlc org.eclipse.cdt/xlc/org.eclipse.cdt.core.lrparser.xlc
-cvs co -r $CDT_TAG -d org.eclipse.cdt.core.parser.upc org.eclipse.cdt/upc/org.eclipse.cdt.core.parser.upc
-
-cd org.eclipse.ptp.rdt.core.remotejars
-
-# run the script in remotejars
-export PATH=/opt/public/common/ibm-java2-ppc-50/bin:$PATH
-echo `java -version`
-java -jar ../../../tools/org.eclipse.releng.basebuilder/plugins/org.eclipse.equinox.launcher.jar \
-	-ws gtk -arch ppc -os linux -application org.eclipse.ant.core.antRunner
-
-} >$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 7caf35a..0000000
--- a/releng/org.eclipse.ptp.releng/update_versions
+++ /dev/null
@@ -1,123 +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.external-feature \
-	org.eclipse.ptp.master \
-	org.eclipse.ptp.etfw-feature \
-	org.eclipse.ptp.etfw.tau-feature \
-	org.eclipse.ptp.etfw.tau.fortran-feature \
-	org.eclipse.ptp.isp-feature \
-	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.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.slurm-feature \
-	org.eclipse.ptp.rm.pbs-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.pbs.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
-}
-
-update_configure() {
-	sed -e "s/AC_INIT(\[*\([^],]*\)\]*, *\[*[0-9]\.[0-9]\.[0-9]\]*)/AC_INIT([\1], [$2])/" < $1/configure.in > $TMP_DIR/${1}_configure.in
-	mv $TMP_DIR/${1}_configure.in $1/configure.in
-	(cd $1; autoconf)
-}
-
-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
-	update_configure $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/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.classpath b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.classpath
deleted file mode 100644
index 64c5e31..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.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/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.project b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.project
deleted file mode 100644
index 196b388..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ptp.etfw.feedback.sample</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/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.settings/org.eclipse.jdt.core.prefs b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index a72f27f..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Fri Nov 06 09:51:25 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.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/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/META-INF/MANIFEST.MF b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/META-INF/MANIFEST.MF
deleted file mode 100644
index f6603e2..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Sample
-Bundle-SymbolicName: org.eclipse.ptp.etfw.feedback.sample; singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ptp.etfw.feedback.sample.Activator
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.ptp.etfw.feedback;bundle-version="1.0.0",
- org.eclipse.core.resources;bundle-version="3.5.1"
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/build.properties b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/build.properties
deleted file mode 100644
index 0d3d3a7..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = plugin.xml,\
-               META-INF/,\
-               .,\
-               icons/
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/data/sample.c b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/data/sample.c
deleted file mode 100644
index 2632918..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/data/sample.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- ============================================================================
- Name        : SampleC.c
- Author      : 
- Version     :
- Copyright   : Your copyright notice
- Description : Hello World in C, Ansi-style
- ============================================================================
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(void) {
-	puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
-	for (int var = 0; var < max; ++var) {
-		puts("loop");
-	}
-	return EXIT_SUCCESS;
-}
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/data/sample.xml b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/data/sample.xml
deleted file mode 100644
index 3198a3b..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/data/sample.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<SampleXMLRoot>
-   <MyItem name="main is here" parent="mysample" file="sample.c" function="main" lineNo="14"  isFunction="true" id="0"/>
-   <MyItem name="loop is here" parent="mysample" file="sample.c" function="main" lineNo="16"  isFunction="true" id="1"/>
-   <MyItem name="this is return" parent="mysample" file="sample.c" function="turkey" lineNo="19"  isFunction="true" id="2"/>
-   <MyItem name="open brace" parent="braces" file="sample.c" function="turkey" lineNo="14"  isFunction="true" id="3"/>
-   <MyItem name="close brace" parent="braces" file="sample.c" function="turkey" lineNo="18"  isFunction="true" id="4"/>
-</SampleXMLRoot>
\ No newline at end of file
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/feedback_action.gif b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/feedback_action.gif
deleted file mode 100644
index 47580d0..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/feedback_action.gif
+++ /dev/null
Binary files differ
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/feedback_view.gif b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/feedback_view.gif
deleted file mode 100644
index 9fa6f8e..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/feedback_view.gif
+++ /dev/null
Binary files differ
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/sample.gif b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/sample.gif
deleted file mode 100644
index 34fb3c9..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/icons/sample.gif
+++ /dev/null
Binary files differ
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/plugin.xml b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/plugin.xml
deleted file mode 100644
index a4fe36b..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/plugin.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-  
-   <extension
-         point="org.eclipse.ui.menus">
-         
-      <menuContribution
-            locationURI="menu:org.eclipse.ui.main.menu?after=additions">
-         <menu
-               label="Feedback"
-               mnemonic="%menu.mnemonic"
-               id="org.eclipse.ptp.etfw.feedback.actions.menus.sampleMenu">
-            <command
-                  commandId="org.eclipse.ptp.etfw.feedback.actions.commands.sampleCommand"
-                  mnemonic="%command.mnemonic"
-                  id="org.eclipse.ptp.etfw.feedback.actions.menus.sampleCommand">
-            </command>
-         </menu>
-      </menuContribution>
-      <menuContribution
-            locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
-         <toolbar
-               id="org.eclipse.ptp.etfw.feedback.actions.toolbars.sampleToolbar">
-            <command
-                  commandId="org.eclipse.ptp.etfw.feedback.actions.commands.sampleCommand"
-                  icon="icons/feedback_view.gif"
-                  tooltip="Show ETFw Feedback view for selected XML file"
-                  id="org.eclipse.ptp.etfw.feedback.actions.toolbars.sampleCommand">
-            </command>
-         </toolbar>
-      </menuContribution>
-   </extension>
-      <extension
-         id="sampleParser"
-         name="Sample PTP Feedback view report items"
-         point="org.eclipse.ptp.etfw.feedback.parser">
-      <feedtype
-            class="org.eclipse.ptp.etfw.feedback.sample.SampleFeedbackParser"
-            id="org.eclipse.ptp.etfw.feedback.sample.parser"
-            name="Sample feedback parser"
-            nodeName="SampleXMLRoot">
-      </feedtype>
-   </extension>
-     <extension
-         point="org.eclipse.ui.views">
-   <!--   <category
-            name="Sample Feedback View"
-            id="org.eclipse.ptp.etfw.feedback">
-      </category>
-      -->
-      <view
-            name="Sample Feedback items"
-            icon="icons/feedback_view.gif"
-            category="org.eclipse.ptp.etfw.feedback"
-            class="org.eclipse.ptp.etfw.feedback.sample.SampleFeedbackView"
-            id="org.eclipse.ptp.etfw.feedback.sample.view">
-      </view>
-   </extension>
-      <extension
-         id="sampleAction"
-         name="Sample Added Action"
-         point="org.eclipse.ptp.etfw.feedback.action">
-      <action
-            class="org.eclipse.ptp.etfw.feedback.sample.actions.SampleFeedbackAction"
-            icon="icons/feedback_action.gif"
-            id="sampleFeedbackAction1"
-            name="Sample Feedback Action"
-            viewID="org.eclipse.ptp.etfw.feedback.sample.view">
-      </action>
-   </extension>
-
-</plugin>
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/Activator.java b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/Activator.java
deleted file mode 100644
index 6bb582f..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/Activator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2009 IBM Corporation.
- * 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.etfw.feedback.sample;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.ptp.etfw.feedback.sample";
-	public static final String MARKER_ID = "org.eclipse.ptp.etfw.feedback.sample.marker";
-	public static final String VIEW_ID = "org.eclipse.ptp.etfw.feedback.sample.view";
-
-	// The shared instance
-	private static Activator plugin;
-
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * Returns an image descriptor for the image file at the given
-	 * plug-in relative path
-	 *
-	 * @param path the path
-	 * @return the image descriptor
-	 */
-	public static ImageDescriptor getImageDescriptor(String path) {
-		return imageDescriptorFromPlugin(PLUGIN_ID, path);
-	}
-}
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackItem.java b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackItem.java
deleted file mode 100644
index c4225dd..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackItem.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2009 IBM Corporation.
- * 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.etfw.feedback.sample;
-
-import java.util.List;
-
-import org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem;
-
-/**
- * @author Beth Tibbitts
- *
- */
-public class SampleFeedbackItem implements IFeedbackItem {
-	private String name;
-	private String parentID;
-	private String id;
-	private String description;
-	private String filename;
-	private int lineNo;
-
-	public SampleFeedbackItem(String name, String parentID, String id, String filename, int lineNo, String description) {
-		this.name=name;
-		this.parentID=parentID;
-		this.id=id;
-		this.filename=filename;
-		this.lineNo=lineNo;
-		this.description=description;
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#getChildren()
-	 */
-	public List<IFeedbackItem> getChildren() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#getDescription()
-	 */
-	public String getDescription() {
-		return description;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#getFile()
-	 */
-	public String getFile() {
-		return filename;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#getID()
-	 */
-	public String getID() {
-		return id;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#getLineNoStart()
-	 */
-	public int getLineNoStart() {
-		return this.lineNo;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#getName()
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#getParentID()
-	 */
-	public String getParentID() {
-		return parentID;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem#hasChildren()
-	 */
-	public boolean hasChildren() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-	public Object getObject() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackParser.java b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackParser.java
deleted file mode 100644
index d42585c..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackParser.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2009 IBM Corporation.
- * 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.etfw.feedback.sample;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.ptp.etfw.feedback.AbstractFeedbackParser;
-import org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-/**
- * Sample parser to return items for the ETFw Feedback view
- * @author beth
- *
- */
-public class SampleFeedbackParser extends AbstractFeedbackParser {
-	private boolean traceOn=false;
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ptp.etfw.feedback.obj.IFeedbackParser#getFeedbackItems()
-	 */
-	public IFeedbackItem[] getFeedbackItems() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public List<IFeedbackItem> getFeedbackItems(IFile file) {
-		if(traceOn)System.out.println("Reading xml file: "+file.getLocation());
-		String xmlfile = file.getLocation().toOSString();
-		List<IFeedbackItem> items=new ArrayList<IFeedbackItem>();
-		try {
-			items=parse(xmlfile);
-		} catch (XPathExpressionException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (ParserConfigurationException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (SAXException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		
-		return items;
-	}
-
-	public void setFile(IFile file) {
-		System.out.println("not used!");
-		
-	}
-
-	public List<IFeedbackItem> getFeedbackItems(File file) {		
-		// this is probably twisted around, too much converting back and forth
-		IWorkspace workspace =ResourcesPlugin.getWorkspace();
-		IPath location = Path.fromOSString(file.getAbsolutePath());
-		IFile ifile = workspace.getRoot().getFileForLocation(location);
-		List<IFeedbackItem> items = getFeedbackItems(ifile);
-		return items;
-	}
-
-	public void setFile(File file) {
-		System.out.println("not used!");
-		
-	}
-
-	/**
-	 * Marker ID for markers added by this feedback parser.
-	 * For now they are all the same, using plugin id.
-	 */
-	public String getMarkerID() {
-		return Activator.MARKER_ID;
-	}
-	public String getViewID() {
-		return Activator.VIEW_ID;
-	}
-
-	/**
-	 * Populate objects from the xml file given
-	 * @param xmlfile
-	 * @throws ParserConfigurationException
-	 * @throws SAXException
-	 * @throws IOException
-	 * @throws XPathExpressionException
-	 */
-	public List<IFeedbackItem> parse(String xmlfile)
-	  throws ParserConfigurationException, SAXException, 
-	  IOException, XPathExpressionException {
-	      
-		  DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
-		  domFactory.setNamespaceAware(true); // never forget this!
-	      Document document = null;
-	      DocumentBuilder builder = domFactory.newDocumentBuilder();
-	
-	      File file = new File(xmlfile);
-	      if(!file.exists()) {
-	    	  System.out.println("Cannot find file: "+xmlfile);
-	    	  return null;
-	      }
-	      if(traceOn)System.out.println("Parse XML file: "+file);
-
-	      List<IFeedbackItem> items = new ArrayList<IFeedbackItem>();
-
-	      // look for file in same dir as xml file
-	      IPath p = new Path(xmlfile);
-	      p=p.removeLastSegments(1);
-	      String filepath=p.toPortableString()+IPath.SEPARATOR;//+"mhd.F";  
-
-	      document = builder.parse(file);
-		      
-	      XPathFactory factory = XPathFactory.newInstance();
-	      XPath xpath = factory.newXPath();
-	      
-	      /* get the hotspots */
-	      XPathExpression expr 
-	       = xpath.compile("//*[local-name()='MyItem']");
-	
-	      Object result = expr.evaluate(document, XPathConstants.NODESET);
-	      NodeList nodes = (NodeList) result;
-	      for (int i = 0; i < nodes.getLength(); i++) {
-	          NamedNodeMap attributes = nodes.item(i).getAttributes();
-	          if (attributes == null) continue;
-				try {
-					String name = attributes.getNamedItem("name").getNodeValue();
-
-					String fname = attributes.getNamedItem("file").getNodeValue();
-					fname=filepath+fname; // fully qualify (if needed?)
-					String function = attributes.getNamedItem("function").getNodeValue();
-					String line = attributes.getNamedItem("lineNo").getNodeValue();
-					int lineNo = Integer.parseInt(line);
-					String id = attributes.getNamedItem("id").getNodeValue();
-					Node parentNode=attributes.getNamedItem("parent");
-					String parentID="noParent";
-					if(parentNode!=null) {
-					  parentID=attributes.getNamedItem("parent").getNodeValue();
-					}
-					SampleFeedbackItem item = new SampleFeedbackItem(name, parentID, id, fname, lineNo, function);
-					items.add(item);
-				} catch (Exception e) {
-					System.out.println("SampleFeedbackParser: Exception creating item " + i);
-				}
-	
-	      }//end for
-
-
-	      
-	      return items;
-	}
-
-}
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackView.java b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackView.java
deleted file mode 100644
index c014148..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleFeedbackView.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2009 IBM Corporation.
- * 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.etfw.feedback.sample;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.ptp.etfw.feedback.FeedbackIDs;
-import org.eclipse.ptp.etfw.feedback.preferences.PreferenceConstants;
-import org.eclipse.ptp.etfw.feedback.views.SimpleTreeTableMarkerView;
-
-
-
-/**
- * Expose xlC compiler transformation information in an eclipse view
- * 
- * @author beth 
- * 
- */
-public class SampleFeedbackView extends SimpleTreeTableMarkerView {
-	/**
-	 * Assure that parent nodes will get created as needed: that is,
-	 * we don't have IFeedbackItem objects for the parents. Parent "nodes"
-	 * are created for each unique parentID, thus "categorizing" the items
-	 * automatically
-	 */
-	private static boolean CREATE_PARENT_NODES=true;
-	
-
-	/**
-	 * Attribute names, used to store info in the marker, corresponding to each column in the view.
-	 * Use these constants or values of your own.
-	 * To add/remove a column, modify this: (1)
-	 */
-	private static String[] attrNames=new String[] {
-		FeedbackIDs.FEEDBACK_ATTR_NAME,
-		FeedbackIDs.FEEDBACK_ATTR_FILENAME,
-		FeedbackIDs.FEEDBACK_ATTR_ID,
-		FeedbackIDs.FEEDBACK_ATTR_FUNCTION_CALLEE,
-		IMarker.LINE_NUMBER, // Note: currently column 5 (index=4) must be an int value, presumably line number.
-		                     // This restriction will be lifted and generalized later.
-		/*IMarker.CHAR_START,IMarker.CHAR_END*/
-		FeedbackIDs.FEEDBACK_ATTR_DESC};
-	/** To add/remove a column, modify this: (2)*/
-	private static String[] colNames=new String[] {"Type/Name","File",  "ID", "blank", "LineNo",
-		/*"Char start","Char end"*/ "Description*" };
-	/** To add/remove a column, modify this: (3)*/
-	private static int[] widths = new int[] { 160, 100, 50, 50, 80, 200  };
-	
-	protected IPreferenceStore preferenceStore;
-	protected boolean maintainExpandCollapseState;
-	
-	
-	/**
-	 * Use the ctor that allows an arbitrary number of extra columns.
-	 * This ctor is called (1). FIXME need to generalize the name "Xform" used here?
-	 */
-	public SampleFeedbackView() {
-		super(Activator.getDefault(), "XForm", "XForms", attrNames,colNames,widths,
-				Activator.MARKER_ID, "parent",CREATE_PARENT_NODES);
-		preferenceStore = Activator.getDefault().getPreferenceStore();
-		maintainExpandCollapseState=preferenceStore.getBoolean(PreferenceConstants.P_MAINTAIN_EXPAND_COLLAPSE_STATE);
-
-	}
-
-	/**
-	 * Provide something for the "Info" popup action, based on the marker
-	 * <br>Since we didn't use the Artifact, Artifact Manager, etc in the base class we need something to look useful here.
-	 */
-	@Override
-	public String extractMarkerInfo(IMarker marker) {
-		StringBuffer infoBuffer= new StringBuffer();
-		String filename = marker.getResource().getName();
-		String name=getStrAttr(marker, FeedbackIDs.FEEDBACK_ATTR_NAME);
-		infoBuffer.append("\nThis information provided by SampleFeedbackView.extractMarkerInfo()");
-		infoBuffer.append("\nFile name: ").append(filename);
-		
-		infoBuffer.append("\nLine number: ").append(getStrAttr(marker,IMarker.LINE_NUMBER));
-		infoBuffer.append("\nName: ").append(name);
-		String parent=getStrAttr(marker, FeedbackIDs.FEEDBACK_ATTR_PARENT);
-		infoBuffer.append("\nParent (Item type): ").append(parent);
-		infoBuffer.append("\nDescription: ").append(getStrAttr(marker,FeedbackIDs.FEEDBACK_ATTR_DESC));
-		return infoBuffer.toString();
-	}
-	public String getStrAttr(IMarker marker, String attrName) {
-		try {
-		String str=marker.getAttribute(attrName).toString();
-		
-		return str;
-		}catch(CoreException e) {
-			System.out.println("Exception getting marker attr in CompilerXFormTreeTableView.getStrAttr() "+e.getMessage());  
-			return "*error*";
-		}
-		
-	}
-
-	/**
-	 * 
-	 */
-	@Override
-	protected void maintainExpandCollapseStatus() {
-		// re-query each time, in case prefs have changed
-		maintainExpandCollapseState = preferenceStore.getBoolean(PreferenceConstants.P_MAINTAIN_EXPAND_COLLAPSE_STATE);
-		if (maintainExpandCollapseState) {
-			switch (expandCollapseStatus) {
-			case EXPAND_COLLAPSE_EXPANDALL:
-				expandAllAction.run();
-				break;
-			case EXPAND_COLLAPSE_COLLAPSEALL:
-				collapseAllAction.run();
-				break;
-			case EXPAND_COLLAPSE_NONE:
-				// do nothing: user hasn't done expandAll or collapseAll yet.
-			}
-		}
-	}
-
-}
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleShowFeedbackHandler.java b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleShowFeedbackHandler.java
deleted file mode 100644
index b32824d..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/SampleShowFeedbackHandler.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2009 IBM Corporation.
- * 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.etfw.feedback.sample;
-
-import org.eclipse.ptp.etfw.feedback.actions.handlers.ShowFeedbackHandler;
-
-/**
- * Handler to handle actions from this plug-in to show its data in the Feedback View
- * 
- * @author beth tibbitts
- *
- */
-public class SampleShowFeedbackHandler extends ShowFeedbackHandler {
-
-}
diff --git a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/actions/SampleFeedbackAction.java b/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/actions/SampleFeedbackAction.java
deleted file mode 100644
index 80d75ff..0000000
--- a/tools/etfw/org.eclipse.ptp.etfw.feedback.sample/src/org/eclipse/ptp/etfw/feedback/sample/actions/SampleFeedbackAction.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2010 IBM Corporation.
- * 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.etfw.feedback.sample.actions;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.ptp.etfw.feedback.AbstractFeedbackAction;
-import org.eclipse.ptp.etfw.feedback.obj.IFeedbackItem;
-import org.eclipse.ptp.etfw.feedback.sample.Activator;
-
-/**
- * A sample action that can be added to the ETFw Feedback view
- * @author beth
- *
- */
-public class SampleFeedbackAction extends AbstractFeedbackAction {
-
-	
-
-	public void run(IMarker marker) {
-		String name="(unknown)";
-		try {
-			name = (String)marker.getAttribute("name");
-		} catch (CoreException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		MessageDialog.openInformation(null, "Sample action", "Do something interesting here with marker: "+name);
-
-	}
-
-	public void run(IFeedbackItem item) {
-		MessageDialog.openInformation(null, "Sample action", "Do something interesting here with IFeedbackItem");
-
-	}
-
-
-	public String getToolTip() {
-		return "SampleFeedbackAction tooltip";
-	}
-
-	@Override
-	public String getText() {
-		return "SampleFeedbackAction text";
-	}
-
-	@Override
-	public String getPluginId() {
-		return Activator.PLUGIN_ID;
-	}
-
-}
