diff --git a/samples/getting-started/helloworld-ant/README b/samples/getting-started/helloworld-ant/README
deleted file mode 100644
index fc306ca..0000000
--- a/samples/getting-started/helloworld-ant/README
+++ /dev/null
@@ -1,43 +0,0 @@
-Tuscany - Getting Started - Helloworld Sample
----------------------------------------------
-
-This sample demonstrates a simple helloworld style SCA application and how to run that with Tuscany.
-
-See the README in the top-level samples folder for general information on the Tuscany samples.
-
-This project creates an SCA contribution with a deployable composite named helloworld.composite.
-The composite defines an SCA component, HelloworldComponent, which provides a Helloworld service, 
-the component is implemented by a Java class. 
-
-You can use the contribution by starting the composite in the Tuscany Shell. To do that run the 
-following command in the helloworld folder:
-
-   mvn tuscany:run 
-
-Alternatively, the Tuscany Shell can be started with the scripts in the Tuscany binary distribution 
-bin folder. To do that run the following command at the root of a Tuscany binary distribution:
-
-   bin\tuscany.bat samples\getting-started\helloworld
-
-Once the Shell has been started with one of those methods you can use Shell commands to explore
-the SCA domain, for example, use the "installed" command to get the status of installed contributions, 
-"services" to see the available component services, and you may test calling the helloworld service by 
-using the "invoke" command:
-
-   invoke HelloworldComponent sayHello yourName
-
----
- 
-This sample was created by the Tuscany contribution-jar Maven archetype. You can use that archetype to 
-create your own SCA contribution projects by running the following Maven command:
-
-   mvn archetype:generate -DarchetypeCatalog=http://tuscany.apache.org
-
-then at the prompt select 1 to choose the contribution-jar archetype and then answer the questions. 
-This project used the following answers:
-
-   Define value for property 'groupId': : org.apache.tuscany.sca.samples
-   Define value for property 'artifactId': : helloworld-contribution
-   Define value for property 'version': 1.0-SNAPSHOT: 2.0-SNAPSHOT
-   Define value for property 'package': org.apache.tuscany.sca.samples: sample  
-
diff --git a/samples/getting-started/helloworld-ant/build.xml b/samples/getting-started/helloworld-ant/build.xml
deleted file mode 100644
index d4f0d44..0000000
--- a/samples/getting-started/helloworld-ant/build.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
--->
-
-<!-- ====================================================================== -->
-<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above.        -->
-<!-- ====================================================================== -->
-
-<project name="helloworld" default="package" basedir=".">
-
-  <!-- ====================================================================== -->
-  <!-- Import maven-build.xml into the current project                        -->
-  <!-- ====================================================================== -->
-
-  <import file="maven-build.xml"/>
-  
-  <!-- ====================================================================== -->
-  <!-- Help target                                                            -->
-  <!-- ====================================================================== -->
-
-  <target name="help">
-    <echo message="Please run: $ant -projecthelp"/>
-  </target>
-
-</project>
diff --git a/samples/getting-started/helloworld-ant/maven-build.properties b/samples/getting-started/helloworld-ant/maven-build.properties
deleted file mode 100644
index ed8ceeb..0000000
--- a/samples/getting-started/helloworld-ant/maven-build.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-#Generated by Maven Ant Plugin - DO NOT EDIT THIS FILE!
-#Sun Apr 10 08:39:39 BST 2011
-maven.settings.offline=true
-maven.build.finalName=helloworld-ant-2.0-SNAPSHOT
-maven.build.resourceDir.1=.
-maven.build.resourceDir.0=src/main/resources
-maven.build.testOutputDir=${maven.build.dir}/test-classes
-maven.build.testResourceDir.0=src/test/resources
-maven.reporting.outputDirectory=${maven.build.dir}/site
-project.build.sourceEncoding=UTF-8
-distMgmtSnapshotsUrl=https\://repository.apache.org/content/repositories/snapshots
-maven.build.srcDir.0=src/main/java
-project.build.directory=${maven.build.dir}
-dojo.version=1.5.0
-maven.test.reports=${maven.build.dir}/test-reports
-maven.build.dir=target
-tuscany.version=2.0-SNAPSHOT
-project.build.outputDirectory=${maven.build.outputDir}
-project.reporting.outputEncoding=UTF-8
-organization.logo=http\://www.apache.org/images/asf_logo_wide.gif
-maven.build.testDir.0=src/test/java
-maven.settings.interactiveMode=true
-tools.jar=C\:\\Java\\jdk1.6.0_21\\jre/../lib/tools.jar
-notice.dir=.
-sourceReleaseAssemblyDescriptor=source-release
-maven.repo.local=${user.home}/.m2/repository
-distMgmtSnapshotsName=Apache Development Snapshot Repository
-maven.build.outputDir=${maven.build.dir}/classes
diff --git a/samples/getting-started/helloworld-ant/maven-build.xml b/samples/getting-started/helloworld-ant/maven-build.xml
deleted file mode 100644
index 167adeb..0000000
--- a/samples/getting-started/helloworld-ant/maven-build.xml
+++ /dev/null
@@ -1,366 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- ====================================================================== -->
-<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above.        -->
-<!-- ====================================================================== -->
-
-<!-- ====================================================================== -->
-<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== -->
-<!-- ====================================================================== -->
-<!--                                                                        -->
-<!-- Any modifications will be overwritten.                                 -->
-<!--                                                                        -->
-<!-- Generated by Maven Ant Plugin on 4/10/11 8:39 AM                       -->
-<!-- See: http://maven.apache.org/plugins/maven-ant-plugin/                 -->
-<!--                                                                        -->
-<!-- ====================================================================== -->
-
-<project name="helloworld-ant-from-maven" default="package" basedir=".">
-
-  <!-- ====================================================================== -->
-  <!-- Build environment properties                                           -->
-  <!-- ====================================================================== -->
-
-  <property file="${user.home}/.m2/maven.properties"/>
-  <property file="maven-build.properties"/>
-
-  <property name="maven.build.finalName" value="helloworld-ant-2.0-SNAPSHOT"/>
-  <property name="maven.build.dir" value="target"/>
-  <property name="maven.build.outputDir" value="${maven.build.dir}/classes"/>
-  <property name="maven.build.srcDir.0" value="src/main/java"/>
-  <property name="maven.build.resourceDir.0" value="src/main/resources"/>
-  <property name="maven.build.resourceDir.1" value="."/>
-  <property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes"/>
-  <property name="maven.build.testDir.0" value="src/test/java"/>
-  <property name="maven.build.testResourceDir.0" value="src/test/resources"/>
-  <property name="maven.test.reports" value="${maven.build.dir}/test-reports"/>
-  <property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site"/>
-
-  <property name="maven.repo.local" value="${user.home}/.m2/repository"/>
-  <property name="maven.settings.offline" value="true"/>
-  <property name="maven.settings.interactiveMode" value="true"/>
-
-  <!-- ====================================================================== -->
-  <!-- Defining classpaths                                                    -->
-  <!-- ====================================================================== -->
-
-  <path id="build.classpath">
-    <pathelement location="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar"/>
-  </path>
-  <path id="build.test.classpath">
-    <pathelement location="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar"/>
-    <pathelement location="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar"/>
-    <pathelement location="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT/tuscany-base-runtime-2.0-SNAPSHOT.jar"/>
-    <pathelement location="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar"/>
-    <pathelement location="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar"/>
-    <pathelement location="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar"/>
-    <pathelement location="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar"/>
-  </path>
-
-  <!-- ====================================================================== -->
-  <!-- Cleaning up target                                                     -->
-  <!-- ====================================================================== -->
-
-  <target name="clean" description="Clean the output directory">
-    <delete dir="${maven.build.dir}"/>
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- Compilation target                                                     -->
-  <!-- ====================================================================== -->
-
-  <target name="compile" depends="get-deps" description="Compile the code">
-    <mkdir dir="${maven.build.outputDir}"/>
-    <javac destdir="${maven.build.outputDir}" 
-           encoding="UTF-8" 
-           nowarn="false" 
-           debug="true" 
-           optimize="false" 
-           deprecation="true" 
-           target="1.6" 
-           verbose="false" 
-           fork="true" 
-           memoryMaximumSize="512m" 
-           memoryInitialSize="1024m" 
-           source="1.6">
-      <src>
-        <pathelement location="${maven.build.srcDir.0}"/>
-      </src>
-      <classpath refid="build.classpath"/>
-    </javac>
-    <copy todir="${maven.build.outputDir}">
-      <fileset dir="${maven.build.resourceDir.0}"/>
-    </copy>
-    <copy todir="${maven.build.outputDir}">
-      <fileset dir="${maven.build.resourceDir.1}">
-        <include name="LICENSE"/>
-        <include name="NOTICE"/>
-        <include name="README"/>
-        <include name="META-INF/**/*"/>
-        <include name="OSGI-INF/**/*"/>
-      </fileset>
-    </copy>
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- Test-compilation target                                                -->
-  <!-- ====================================================================== -->
-
-  <target name="compile-tests" 
-          depends="compile" 
-          description="Compile the test code" 
-          unless="maven.test.skip">
-    <mkdir dir="${maven.build.testOutputDir}"/>
-    <javac destdir="${maven.build.testOutputDir}" 
-           encoding="UTF-8" 
-           nowarn="false" 
-           debug="true" 
-           optimize="false" 
-           deprecation="true" 
-           target="1.6" 
-           verbose="false" 
-           fork="true" 
-           memoryMaximumSize="512m" 
-           memoryInitialSize="1024m" 
-           source="1.6">
-      <src>
-        <pathelement location="${maven.build.testDir.0}"/>
-      </src>
-      <classpath>
-        <path refid="build.test.classpath"/>
-        <pathelement location="${maven.build.outputDir}"/>
-      </classpath>
-    </javac>
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- Run all tests                                                          -->
-  <!-- ====================================================================== -->
-
-  <target name="test" 
-          depends="compile-tests, junit-missing" 
-          unless="junit.skipped" 
-          description="Run the test cases">
-    <mkdir dir="${maven.test.reports}"/>
-    <junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
-      <sysproperty key="basedir" value="."/>
-      <formatter type="xml"/>
-      <formatter type="plain" usefile="false"/>
-      <classpath>
-        <path refid="build.test.classpath"/>
-        <pathelement location="${maven.build.outputDir}"/>
-        <pathelement location="${maven.build.testOutputDir}"/>
-      </classpath>
-      <batchtest todir="${maven.test.reports}" unless="test">
-        <fileset dir="${maven.build.testDir.0}">
-          <include name="**/*TestCase.java"/>
-          <exclude name="**/*Abstract*Test.java"/>
-        </fileset>
-      </batchtest>
-      <batchtest todir="${maven.test.reports}" if="test">
-        <fileset dir="${maven.build.testDir.0}">
-          <include name="**/${test}.java"/>
-          <exclude name="**/*Abstract*Test.java"/>
-        </fileset>
-      </batchtest>
-    </junit>
-  </target>
-
-  <target name="test-junit-present">
-    <available classname="junit.framework.Test" property="junit.present"/>
-  </target>
-
-  <target name="test-junit-status" 
-          depends="test-junit-present">
-    <condition property="junit.missing">
-      <and>
-        <isfalse value="${junit.present}"/>
-        <isfalse value="${maven.test.skip}"/>
-      </and>
-    </condition>
-    <condition property="junit.skipped">
-      <or>
-        <isfalse value="${junit.present}"/>
-        <istrue value="${maven.test.skip}"/>
-      </or>
-    </condition>
-  </target>
-
-  <target name="junit-missing" 
-          depends="test-junit-status" 
-          if="junit.missing">
-    <echo>=================================== WARNING ===================================</echo>
-    <echo> JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.</echo>
-    <echo>===============================================================================</echo>
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- Javadoc target                                                         -->
-  <!-- ====================================================================== -->
-
-  <target name="javadoc" description="Generates the Javadoc of the application">
-    <javadoc sourcepath="${maven.build.srcDir.0}" 
-             packagenames="*" 
-             destdir="${maven.reporting.outputDirectory}/apidocs" 
-             access="protected" 
-             old="false" 
-             verbose="false" 
-             version="true" 
-             use="true" 
-             author="true" 
-             splitindex="false" 
-             nodeprecated="false" 
-             nodeprecatedlist="false" 
-             notree="false" 
-             noindex="false" 
-             nohelp="false" 
-             nonavbar="false" 
-             serialwarn="false" 
-             charset="ISO-8859-1" 
-             linksource="false" 
-             breakiterator="false" 
-             maxmemory="1024m">
-      <group title="Extension Developer&apos;s SPIs (Work in Progress)"/>
-      <tag name="tuscany.spi.extension.inheritfrom" 
-               scope="t" 
-               description="Provides part of the Tuscany SPI for Extension Developers by specialization of this class/interface"/>
-      <tag name="tuscany.spi.extension.asclient" 
-               scope="t" 
-               description="Provides part of the Tuscany SPI for Extension Developers by calling methods on this interface/class."/>
-      <tag name="tuscany.spi.extension" 
-               scope="a" 
-               description="Elements of the Tuscany SPI for Extension developers are provided."/>
-    </javadoc>
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- Package target                                                         -->
-  <!-- ====================================================================== -->
-
-  <target name="package" depends="compile,test" description="Package the application">
-    <jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar" 
-         compress="true" 
-         index="false" 
-         basedir="${maven.build.outputDir}" 
-         excludes="**/package.html">
-      <manifest>
-        <attribute name="Main-Class"/>
-      </manifest>
-    </jar>
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- A dummy target for the package named after the type it creates         -->
-  <!-- ====================================================================== -->
-
-  <target name="jar" depends="package" description="Builds the jar for the application"/>
-
-  <!-- ====================================================================== -->
-  <!-- Download dependencies target                                           -->
-  <!-- ====================================================================== -->
-
-  <target name="test-offline">
-    <condition property="maven.mode.offline">
-      <equals arg1="${maven.settings.offline}" arg2="true"/>
-    </condition>
-  </target>
-
-  <target name="get-deps" 
-          depends="test-offline" 
-          description="Download all dependencies" 
-          unless="maven.mode.offline">
-    <mkdir dir="${maven.repo.local}"/>
-    <mkdir dir="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT"/>
-    <get src="http://svn.apache.org/repos/asf/tuscany/maven/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar" 
-         dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repository.apache.org/snapshots/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar" 
-         dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repo1.maven.org/maven2/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar" 
-         dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-sca-api/2.0-SNAPSHOT/tuscany-sca-api-2.0-SNAPSHOT.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <mkdir dir="${maven.repo.local}/junit/junit/4.8.1"/>
-    <get src="http://svn.apache.org/repos/asf/tuscany/maven/junit/junit/4.8.1/junit-4.8.1.jar" 
-         dest="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repository.apache.org/snapshots/junit/junit/4.8.1/junit-4.8.1.jar" 
-         dest="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repo1.maven.org/maven2/junit/junit/4.8.1/junit-4.8.1.jar" 
-         dest="${maven.repo.local}/junit/junit/4.8.1/junit-4.8.1.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <mkdir dir="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT"/>
-    <get src="http://svn.apache.org/repos/asf/tuscany/maven/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT/tuscany-base-runtime-2.0-SNAPSHOT.jar" 
-         dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT/tuscany-base-runtime-2.0-SNAPSHOT.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repository.apache.org/snapshots/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT/tuscany-base-runtime-2.0-SNAPSHOT.jar" 
-         dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT/tuscany-base-runtime-2.0-SNAPSHOT.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repo1.maven.org/maven2/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT/tuscany-base-runtime-2.0-SNAPSHOT.jar" 
-         dest="${maven.repo.local}/org/apache/tuscany/sca/tuscany-base-runtime/2.0-SNAPSHOT/tuscany-base-runtime-2.0-SNAPSHOT.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <mkdir dir="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3"/>
-    <get src="http://svn.apache.org/repos/asf/tuscany/maven/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" 
-         dest="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repository.apache.org/snapshots/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" 
-         dest="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repo1.maven.org/maven2/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" 
-         dest="${maven.repo.local}/org/apache/ws/commons/schema/XmlSchema/1.4.3/XmlSchema-1.4.3.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <mkdir dir="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2"/>
-    <get src="http://svn.apache.org/repos/asf/tuscany/maven/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" 
-         dest="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repository.apache.org/snapshots/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" 
-         dest="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repo1.maven.org/maven2/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" 
-         dest="${maven.repo.local}/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <mkdir dir="${maven.repo.local}/cglib/cglib/2.2"/>
-    <get src="http://svn.apache.org/repos/asf/tuscany/maven/cglib/cglib/2.2/cglib-2.2.jar" 
-         dest="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repository.apache.org/snapshots/cglib/cglib/2.2/cglib-2.2.jar" 
-         dest="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repo1.maven.org/maven2/cglib/cglib/2.2/cglib-2.2.jar" 
-         dest="${maven.repo.local}/cglib/cglib/2.2/cglib-2.2.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <mkdir dir="${maven.repo.local}/asm/asm/3.1"/>
-    <get src="http://svn.apache.org/repos/asf/tuscany/maven/asm/asm/3.1/asm-3.1.jar" 
-         dest="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repository.apache.org/snapshots/asm/asm/3.1/asm-3.1.jar" 
-         dest="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-    <get src="http://repo1.maven.org/maven2/asm/asm/3.1/asm-3.1.jar" 
-         dest="${maven.repo.local}/asm/asm/3.1/asm-3.1.jar" 
-         usetimestamp="false" 
-         ignoreerrors="true"/>
-  </target>
-
-</project>
diff --git a/samples/getting-started/helloworld-ant/pom.xml b/samples/getting-started/helloworld-ant/pom.xml
deleted file mode 100644
index c357408..0000000
--- a/samples/getting-started/helloworld-ant/pom.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-   <modelVersion>4.0.0</modelVersion>
-
-   <parent>
-      <groupId>org.apache.tuscany.sca.samples</groupId>
-      <artifactId>tuscany-samples</artifactId>
-      <version>2.0-SNAPSHOT</version>
-      <relativePath/> 
-   </parent>
-
-   <artifactId>helloworld-ant</artifactId>
-   <version>2.0-SNAPSHOT</version>
-
-   <name>Apache Tuscany SCA Samples Helloworld Using Ant build</name>
-
-   <properties>
-      <tuscany.version>${project.version}</tuscany.version>
-   </properties>
-
-   <!-- ASF repositories so sample can be built from SVN without building trunk-->
-   <repositories><repository>
-       <id>apache.snapshots</id>
-       <name>Apache Snapshot Repository</name>
-       <url>http://repository.apache.org/snapshots</url>
-       <releases><enabled>false</enabled></releases>
-   </repository></repositories>
-   <pluginRepositories><pluginRepository>
-       <id>apache.snapshots</id>
-       <name>Apache Snapshot Repository</name>
-       <url>http://repository.apache.org/snapshots</url>
-       <releases><enabled>false</enabled></releases>
-   </pluginRepository></pluginRepositories>
-
-   <dependencies>
-
-      <dependency>
-         <groupId>org.apache.tuscany.sca</groupId>
-         <artifactId>tuscany-sca-api</artifactId>
-         <version>${tuscany.version}</version>
-         <scope>provided</scope>
-      </dependency>
-
-      <dependency>
-         <groupId>junit</groupId>
-         <artifactId>junit</artifactId>
-         <version>4.8.1</version>
-         <scope>test</scope>
-      </dependency>
-
-      <dependency>
-         <groupId>org.apache.tuscany.sca</groupId>
-         <artifactId>tuscany-base-runtime</artifactId>
-         <version>${tuscany.version}</version>
-         <scope>test</scope>
-      </dependency>
-
-   </dependencies>
-
-   <build>
-
-      <plugins>
-
-         <!-- to support running the composite with mvn tuscany:run -->
-         <plugin>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-maven-plugin</artifactId>
-            <version>${tuscany.version}</version>
-         </plugin>
-      </plugins>
-
-   </build>
-
-</project>
diff --git a/samples/getting-started/helloworld-ant/src/main/java/sample/Helloworld.java b/samples/getting-started/helloworld-ant/src/main/java/sample/Helloworld.java
deleted file mode 100644
index f4e8c50..0000000
--- a/samples/getting-started/helloworld-ant/src/main/java/sample/Helloworld.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-package sample;
-
-import org.oasisopen.sca.annotation.Remotable;
-
-@Remotable
-public interface Helloworld {
-
-    String sayHello(String name);
-
-}
diff --git a/samples/getting-started/helloworld-ant/src/main/java/sample/HelloworldImpl.java b/samples/getting-started/helloworld-ant/src/main/java/sample/HelloworldImpl.java
deleted file mode 100644
index 089b1a4..0000000
--- a/samples/getting-started/helloworld-ant/src/main/java/sample/HelloworldImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-package sample;
-
-public class HelloworldImpl implements Helloworld {
-
-    public String sayHello(String name) {
-        return "Hello " + name;
-    }
-
-}
diff --git a/samples/getting-started/helloworld-ant/src/main/resources/META-INF/sca-contribution.xml b/samples/getting-started/helloworld-ant/src/main/resources/META-INF/sca-contribution.xml
deleted file mode 100644
index 95c32fb..0000000
--- a/samples/getting-started/helloworld-ant/src/main/resources/META-INF/sca-contribution.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
--->
-<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
-              xmlns:sample="http://sample">
-   
-   <deployable composite="sample:helloworld-contribution" />
-
-</contribution>
diff --git a/samples/getting-started/helloworld-ant/src/main/resources/helloworld.composite b/samples/getting-started/helloworld-ant/src/main/resources/helloworld.composite
deleted file mode 100644
index e0206cd..0000000
--- a/samples/getting-started/helloworld-ant/src/main/resources/helloworld.composite
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
--->
-<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
-           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
-           targetNamespace="http://sample"
-           name="helloworld-contribution">
-
-    <component name="HelloworldComponent">
-        <implementation.java class="sample.HelloworldImpl"/>
-    </component>
-
-</composite>
diff --git a/samples/getting-started/helloworld-ant/src/test/java/sample/HelloworldTestCase.java b/samples/getting-started/helloworld-ant/src/test/java/sample/HelloworldTestCase.java
deleted file mode 100644
index be27aa6..0000000
--- a/samples/getting-started/helloworld-ant/src/test/java/sample/HelloworldTestCase.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-package sample;
-
-import org.junit.Assert;
-
-import org.apache.tuscany.sca.Node;
-import org.apache.tuscany.sca.TuscanyRuntime;
-import org.junit.Test;
-import org.oasisopen.sca.NoSuchServiceException;
-
-public class HelloworldTestCase {
-
-    @Test
-    public void testSayHello() throws NoSuchServiceException {
-
-        // Run the SCA composite in a Tuscany runtime
-        Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
-        try {
-            
-            // Get the Helloworld service proxy
-            Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
-            
-            // test that it works as expected
-            Assert.assertEquals("Hello Amelia", helloworld.sayHello("Amelia"));
-            
-        } finally {
-            // Stop the Tuscany runtime Node
-            node.stop();        
-        }
-    }
-}
diff --git a/samples/getting-started/helloworld-ant/src/test/java/sample/Main.java b/samples/getting-started/helloworld-ant/src/test/java/sample/Main.java
deleted file mode 100644
index fe9fedb..0000000
--- a/samples/getting-started/helloworld-ant/src/test/java/sample/Main.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-package sample;
-
-import org.apache.tuscany.sca.Node;
-import org.apache.tuscany.sca.TuscanyRuntime;
-import org.oasisopen.sca.NoSuchServiceException;
-
-public class Main {
-
-    public static void main(String[] args) throws NoSuchServiceException {
-
-        // Run the SCA composite in a Tuscany runtime
-        Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes");
-        try {
-            
-            // Get the Helloworld service proxy
-            Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent");
-            
-            // Call the sayHello method
-            System.out.println(helloworld.sayHello(args.length>0 ? args[0]: "World"));
-            
-        } finally {
-            // Stop the Tuscany runtime Node
-            node.stop();        
-        }
-    }
-}
