diff --git a/distribution/src/main/assembly/bin.xml b/distribution/src/main/assembly/bin.xml
index b616731..3f42515 100644
--- a/distribution/src/main/assembly/bin.xml
+++ b/distribution/src/main/assembly/bin.xml
@@ -102,8 +102,6 @@
                 <exclude>*/target/wsdl2java-source/**/*</exclude>
                 <exclude>*/**/*.svg</exclude>
                 <!-- Sample specific work file/folders to exclude -->
-                <exclude>pom.xml</exclude>
-                <exclude>pom-distribution.xml</exclude>
                 <exclude>calculator-webapp/target/sample-calculator-webapp</exclude>
                 <exclude>calculator-webapp/target/sample-calculator-webapp/**/*</exclude>
                 <exclude>calculator-ws-webapp/target/sample-calculator-ws-webapp</exclude>
@@ -112,8 +110,6 @@
                 <exclude>calculator-ws-secure-webapp/target/sample-calculator-ws-secure-webapp/**/*</exclude>
                 <exclude>chat-webapp/target/sample-chat-webapp</exclude>
                 <exclude>chat-webapp/target/sample-chat-webapp/**/*</exclude>
-                <exclude>domain-webapp/target/sample-domain-webapp</exclude>
-                <exclude>domain-webapp/target/sample-domain-webapp/**/*</exclude>
                 <exclude>feed-aggregator-webapp/target/sample-feed-aggregator-webapp</exclude>
                 <exclude>feed-aggregator-webapp/target/sample-feed-aggregator-webapp/**/*</exclude>
                 <exclude>helloworld-dojo-webapp/target/sample-helloworld-dojo-webapp</exclude>
@@ -136,7 +132,6 @@
                 <exclude>calculator-ws-secure-webapp/target/sample-calculator-ws-secure-webapp.war</exclude>
                 <exclude>calculator-ws-webapp/target/sample-calculator-ws-webapp.war</exclude>
                 <exclude>chat-webapp/target/sample-chat-webapp.war</exclude>
-                <exclude>domain-webapp/target/sample-domain-webapp.war</exclude>
                 <exclude>feed-aggregator-webapp/target/sample-feed-aggregator-webapp.war</exclude>
                 <exclude>helloworld-dojo-webapp/target/sample-helloworld-dojo-webapp.war</exclude>
                 <exclude>helloworld-jms-webapp/target/sample-helloworld-jms-webapp.war</exclude>
@@ -145,49 +140,6 @@
                 <exclude>helloworld-ws-sdo-webapp/target/sample-helloworld-ws-sdo-webapp.war</exclude>
                 <exclude>helloworld-ws-service-webapp/target/sample-helloworld-ws-service-webapp.war</exclude>
                 <exclude>store-webapp/target/sample-helloworld-store-webapp.war</exclude>
-                <!-- Modules excluded from distribution as work is in progress... -->
-                <exclude>calculator2</exclude>
-                <exclude>calculator2/**/*</exclude>
-                <exclude>calculator-lean</exclude>
-                <exclude>calculator-lean/**/*</exclude>
-                <exclude>calculator-osgi</exclude>
-                <exclude>calculator-osgi/**/*</exclude>
-                <exclude>calculator-rcp</exclude>
-                <exclude>calculator-rcp/**/*</exclude>
-                <exclude>chat2-webapp</exclude>
-                <exclude>chat2-webapp/**/*</exclude>
-                <exclude>customer-dojo</exclude>
-                <exclude>customer-dojo/**/*</exclude>
-                <exclude>customer-dojo-webapp</exclude>
-                <exclude>customer-dojo-webapp/**/*</exclude>
-                <exclude>helloworld-distributed</exclude>
-                <exclude>helloworld-distributed/**/*</exclude>
-                <exclude>helloworld-jsp</exclude>
-                <exclude>helloworld-jsp/**/*</exclude>
-                <exclude>helloworld-servlet</exclude>
-                <exclude>helloworld-servlet/**/*</exclude>
-                <exclude>helloworld-web</exclude>
-                <exclude>helloworld-web/**/*</exclude>
-                <exclude>helloworld-web-callback</exclude>
-                <exclude>helloworld-web-callback/**/*</exclude>
-                <exclude>loanapplication</exclude>
-                <exclude>loanapplication/**/*</exclude>
-                <exclude>helloworld-ws-reference-lean</exclude>
-                <exclude>helloworld-ws-reference-lean/**/*</exclude>
-                <exclude>spi-implementation-pojo</exclude>
-                <exclude>spi-implementation-pojo/**/*</exclude>
-		    <exclude>helloworld-jms-webapp</exclude>
-                <exclude>helloworld-jms-webapp/**/*</exclude>
-                <exclude>domain-webapp</exclude>
-                <exclude>domain-webapp/**/*</exclude>
-                <exclude>calculator-ws-secure-webapp</exclude>
-                <exclude>calculator-ws-secure-webapp/**/*</exclude>
-                <exclude>helloworld-ws-deep-webapp</exclude>
-                <exclude>helloworld-ws-deep-webapp/**/*</exclude>
-                <exclude>helloworld-ws-service-webapp</exclude>
-                <exclude>helloworld-ws-service-webapp/**/*</exclude>
-                <exclude>zipcode-jaxws/</exclude>
-                <exclude>zipcode-jaxws/**/*</exclude>
             </excludes>
         </fileSet>
         <!-- Add all the demos to the demos directory -->
@@ -274,14 +226,6 @@
                 <include>tuscany-sca-manifest.jar</include>
             </includes>
         </fileSet>
-        <!-- Add the node launcher webapp to the modules directory -->
-        <fileSet>
-            <directory>../modules/node2-launcher-webapp/target</directory>
-            <outputDirectory>tuscany-sca-${tuscany.version}/modules</outputDirectory>
-            <includes>
-                <include>*.war</include>
-            </includes>
-        </fileSet>
 
         <!-- temporary fix since maven dependencies of rampart seems to refere to SNAPSHOT versions of the parent pom --> 
         <!--fileSet>
@@ -293,15 +237,6 @@
         </fileSet-->
     </fileSets>
 
-    <files>
-        <!-- Add the subsetted distribution pom.xml to the samples directory -->
-        <file>
-            <source>../samples/pom-distribution.xml</source>
-            <outputDirectory>tuscany-sca-${tuscany.version}/samples</outputDirectory>
-            <destName>pom.xml</destName>
-        </file>
-    </files>
-
     <dependencySets>
         <!-- Add all the Tuscany modules to the modules directory -->
         <dependencySet>
diff --git a/modules/implementation-jee/pom.xml b/modules/implementation-jee/pom.xml
index 6b18856..aee1bb0 100644
--- a/modules/implementation-jee/pom.xml
+++ b/modules/implementation-jee/pom.xml
@@ -51,14 +51,14 @@
             <artifactId>tuscany-contribution-jee</artifactId>
             <version>1.7-SNAPSHOT</version>
         </dependency>
- 
+<!-- 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-contribution-jee-impl</artifactId>
             <version>1.7-SNAPSHOT</version>
             <scope>test</scope> 
         </dependency>
-
+-->
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-host-embedded</artifactId>
diff --git a/modules/pom.xml b/modules/pom.xml
index 075146c..88272ab 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -50,9 +50,9 @@
                 <module>binding-ejb-runtime</module>
                 <module>binding-erlang</module>
                 <module>binding-erlang-runtime</module>
-                <!-- obsolete -->
+<!-- obsolete and excluded from releases, should be archived or deleted
                 <module>binding-feed</module>
-                <!-- new bindings -->
+-->
                 <module>binding-atom</module>
                 <module>binding-atom-js</module>
                 <module>binding-atom-js-dojo</module>
@@ -82,7 +82,7 @@
                 <module>binding-sca</module>
                 <module>binding-sca-axis2</module>
                 <module>binding-sca-corba</module>
-                <module>binding-sca-jms</module>
+                <module>binding-sca-jms</module> <!-- not released in 1.6.1 -->
                 <module>binding-sca-xml</module>
                 <module>binding-ws</module>
                 <module>binding-ws-axis2</module>
@@ -98,7 +98,7 @@
                 <module>contribution-resource</module>
                 <module>contribution-xml</module>
                 <module>contribution-jee</module>
-                <module>contribution-jee-impl</module>
+                <module>contribution-jee-impl</module> <!-- not released in 1.6.1 -->
                 <module>core</module>
                 <module>core-databinding</module>
                 <module>core-spi</module>
@@ -115,8 +115,8 @@
 -->
                 <module>databinding-saxon</module>
                 <module>databinding-xmlbeans</module>
-                <module>databinding-fastinfoset</module>
-                <module>databinding-xstream</module>
+                <module>databinding-fastinfoset</module> <!-- not released in 1.6.1 -->
+                <module>databinding-xstream</module> <!-- not released in 1.6.1 -->
                 <module>definitions</module>
                 <module>definitions-xml</module>
                 <module>domain-manager</module>
@@ -124,20 +124,20 @@
                 <module>endpoint</module>
                 <module>extensibility</module>
                 <module>extensibility-osgi</module>
-                <module>extensibility-equinox</module>
+                <module>extensibility-equinox</module> <!-- not released in 1.6.1 -->
                 <module>extension-helper</module>
-                <module>host-android</module>
+                <module>host-android</module> <!-- not released in 1.6.1 -->
                 <module>host-corba</module>
                 <module>host-corba-jee</module>
                 <module>host-corba-jse</module>
                 <module>host-corba-jse-tns</module>
-                <module>host-ejb</module>
+                <module>host-ejb</module> <!-- not released in 1.6.1 -->
                 <module>host-embedded</module>
                 <module>host-http</module>
                 <module>host-jetty</module>
                 <module>host-jms</module>
                 <module>host-jms-asf</module>
-                <module>host-openejb</module>
+                <module>host-openejb</module> <!-- not released in 1.6.1 -->
                 <module>host-rmi</module>
                 <module>host-tomcat</module>
                 <module>host-webapp</module>
@@ -162,7 +162,7 @@
                 <module>implementation-resource-runtime</module>
                 <module>implementation-script</module>
                 <module>implementation-spring</module>
-		    <module>implementation-spring-runtime</module>
+                <module>implementation-spring-runtime</module>
                 <module>implementation-web</module>
                 <module>implementation-web-runtime</module>
                 <module>implementation-widget</module>
@@ -194,7 +194,7 @@
                 <module>workspace</module>
                 <module>workspace-impl</module>
                 <module>workspace-xml</module>
-                <module>workspace-manager</module>
+                <module>workspace-manager</module> <!-- not released in 1.6.1 -->
                 <module>xsd</module>
                 <module>xsd-xml</module>
                 <module>tracing-aspectj</module>
diff --git a/pom.xml b/pom.xml
index fc12943..7983993 100644
--- a/pom.xml
+++ b/pom.xml
@@ -301,7 +301,7 @@
                 </plugins>       
             </build> 
         </profile>
-
+<!--
         <profile>
             <id>osgi</id>
             <activation>
@@ -332,7 +332,7 @@
                  </plugins>       
             </build> 
         </profile>  
-
+-->
         <profile>
             <id>dependencies</id>
             <modules>
diff --git a/samples/domain-webapp/README b/samples/domain-webapp/README
deleted file mode 100644
index c01a0dd..0000000
--- a/samples/domain-webapp/README
+++ /dev/null
@@ -1,310 +0,0 @@
-Domain Webapp Sample
-====================
-
-Not actually a webapp just yet as webapp host need to use the new domain for it to work.
-If you run the DomainServer in a debugger you will get a server that provides a registry 
-for servide URLs, listens for Nodes starting and stopping and provides a web page where 
-you can see what nodes are registered and pull up their web pages.
-
-Use the nodes from the calculator-distributed to register with this domain
-
-
-==========================================
-Below copied from calculator sample as a template for when this gets done 
-
-
-This sample implements a simple calculator using SCA components.  It uses 
-exactly the same calculator application classes as the calculator sample but 
-runs the application distributed across three nodes.
-
-A node in this sample means an instance of the Tuscany SCA java runtime running
-in a Java virtual machine. 
-
-The README in the samples directory (the directory above this) provides 
-general instructions about building and running samples. Take a look there 
-first. 
-
-If you just want to run it to see what happens open four command prompts and 
-navigate to this sample directory in each one. There is one command to be run 
-in each command prompt:
-
-ant runDomainNode
-ant runNodeB
-ant runNodeC
-ant runNodeA
-
-Please run the commands in this order. 
-
-OR if you don't have ant, on Windows use
-
-java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.DomainNode
-java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.CalculatorNode mydomain nodeB
-java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.CalculatorNode mydomain nodeC
-java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.CalculatorNode mydomain nodeA
-
-and on *nix do
-
-java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.DomainNode
-java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.CalculatorNode mydomain nodeB
-java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.CalculatorNode mydomain nodeC
-java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.CalculatorNode mydomain nodeA
-
-
-The processes started on each of these command prompts can be ended by pressing 
-the <Enter> key.
-
-
-Sample Overview
----------------
-The sample provides a single calculator service with a default SCA (java) 
-binding. NodeA exercises this interface by calling add, subtract, multiply and 
-divide operations. 
-
-In the case of add and subtract the runtime recognises that
-it can't find these services locally and, using the remote (web services) 
-version of the default SCA binding contacts the add service running in NodeB 
-and the subtract service running in NodeC. 
-
-On the command prompt where you started NodeA, you would see output of invoking the 
-calculator functions distributed over NodeB and and NodeC.  On the command prompts 
-where you have started NodeB and NodeC, you would see log messages that indicate that
-the add and substract services where called on these nodes respectively.
-
-The sample demonstrates that the calculator application can be distributed
-across multiple nodes with no change to the application or to the SCA description
-files. 
-
-
-calculator/
-  src/
-    main/
-      java/
-        calculator/
-          CalculatorService.java  - the first component, calls +-/* as 
-                                    appropriate
-          AddService.java         - adds two numbers
-          AddServiceImpl.java
-          SubtractService.java    - subtracts one number from another
-          SubtractServiceImpl.java
-          MultiplyService.java    - multiplies two numbers
-          MultiplyServiceImpl.java
-          DivideService.java      - divides one number by another
-          DivideServiceImpl.java
-        node/
-          CalculatorNode.java     - runs up an sca application based on 
-                                    configuration given on the command 
-                                    line in the form
-                                    
-                                    CalculatorNode <domain name> <node name>
-                                    
-                                    it looks for a directory name the same
-                                    as <node name> and loads the composites
-                                    there
-                                    
-                                    if <node name> = nodeA it calls the 
-                                    +-/* operations otherwise it behaves
-                                    like a server and waits for service 
-                                    requests
-           DomainNode.java        - the node that provides the service 
-                                    discovery mechanism to the distributed
-                                    domain
-      resources/
-        domain                    - the SCA assembly for the service discovery
-                                    function
-        management/               - the SCA assembly for each nodes management
-                                    function
-        nodeA                     - the SCA assembly for nodeA's part of the 
-                                    calculator application
-        nodeB                     - the SCA assembly for nodeB's part of the 
-                                    calculator application
-        nodeC                     - the SCA assembly for nodeB's part of the 
-                                    calculator application
-    test/
-      java/
-        calculator/
-          DomainInMemoryTestCase.java - JUnit test case which runs all of the
-                                    separate ndes in a single VM for test
-                                    purposes
-  calculator-distributed.png      - a pictorial representation of the sample 
-                                    .composite files
-  build.xml                       - the Ant build file
-  pom.xml                         - the Maven build file        
-
-
-Building And Running The Sample Using Ant
------------------------------------------
-With the binary distribution the sample can be built and run using Ant as 
-follows
-
-cd calculator-distributed
-ant compile
-ant runDomainNode
-ant runNodeB
-ant runNodeC
-ant runNodeA
-
-You should see the following output from the four separate command prompt:
-
-runDomainNode:
-     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
-om.util.StAXUtils).
-     [java] log4j:WARN Please initialize the log4j system properly.
-     [java] 23-Aug-2007 17:40:40 org.apache.tuscany.sca.http.jetty.JettyServer a
-ddServletMapping
-     [java] INFO: Added Servlet mapping: http://localhost:8080/ServiceDiscoveryC
-omponent/ServiceDiscovery
-     [java] Domain node started (press enter to shutdown)
-     [java] Registering service: [mydomain nodeB AddServiceComponent org.apache.
-tuscany.sca.assembly.SCABinding http://localhost:8085/AddServiceComponent]
-     [java] Registering service: [mydomain nodeC SubtractServiceComponent org.ap
-ache.tuscany.sca.assembly.SCABinding http://localhost:8086/SubtractServiceCompon
-ent]
-     [java] Finding service: [mydomain SubtractServiceComponent org.apache.tusca
-ny.sca.assembly.SCABinding]
-     [java] Matching service url: http://localhost:8086/SubtractServiceComponent
-
-     [java] Finding service: [mydomain AddServiceComponent org.apache.tuscany.sc
-a.assembly.SCABinding]
-     [java] Matching service url: http://localhost:8085/AddServiceComponent
-     [java] Java Result: 1
-Terminate batch job (Y/N)? y
-
-
-
-runNodeB:
-     [java] file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/
-target/classes/management/
-     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
-om.util.StAXUtils).
-     [java] log4j:WARN Please initialize the log4j system properly.
-     [java] Registering service: [mydomain nodeB AddServiceComponent/ org.apache
-.tuscany.sca.assembly.SCABinding http://localhost:8085/AddServiceComponent]
-     [java] 23-Aug-2007 17:41:25 org.apache.tuscany.sca.http.jetty.JettyServer a
-ddServletMapping
-     [java] INFO: Added Servlet mapping: http://localhost:8085/AddServiceCompone
-nt
-     [java] Node started (press enter to shutdown)
-     [java] AddService - add 3.0 and 2.0
-     
-     
-runNodeC:
-     [java] file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/
-target/classes/management/
-     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
-om.util.StAXUtils).
-     [java] log4j:WARN Please initialize the log4j system properly.
-     [java] Registering service: [mydomain nodeC SubtractServiceComponent org.ap
-ache.tuscany.sca.assembly.SCABinding http://localhost:8086/SubtractServiceCompon
-ent]
-     [java] 23-Aug-2007 17:41:51 org.apache.tuscany.sca.http.jetty.JettyServer a
-ddServletMapping
-     [java] Node started (press enter to shutdown)
-     [java] INFO: Added Servlet mapping: http://localhost:8086/SubtractServiceCo
-mponent
-     [java] SubtractService - subtract 3.0 and 2.0
-Terminate batch job (Y/N)? y
-
-
-runNodeA:
-     [java] file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/
-target/classes/management/
-     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
-om.util.StAXUtils).
-     [java] log4j:WARN Please initialize the log4j system properly.
-     [java] 23-Aug-2007 17:42:12 org.apache.tuscany.sca.assembly.builder.impl.Co
-mpositeBuilderImpl$1 problem
-     [java] WARNING: [WARNING] Component reference target not found, it might be
- a remote service: AddServiceComponent null
-     [java]
-     [java] 23-Aug-2007 17:42:12 org.apache.tuscany.sca.assembly.builder.impl.Co
-mpositeBuilderImpl$1 problem
-     [java] WARNING: [WARNING] Component reference target not found, it might be
- a remote service: SubtractServiceComponent null
-     [java]
-     [java] Finding service: [mydomain SubtractServiceComponent org.apache.tusca
-ny.sca.assembly.SCABinding]
-     [java] Finding service: [mydomain AddServiceComponent org.apache.tuscany.sc
-a.assembly.SCABinding]
-     [java] CalculatorService - add 3.0 and 2.0
-     [java] 3 + 2=5.0
-     [java] CalculatorService - subtract 3.0 and 2.0
-     [java] 3 - 2=1.0
-     [java] CalculatorService - multiply 3.0 and 2.0
-     [java] 3 * 2=6.0
-     [java] CalculatorService - divide 3.0 and 2.0
-     [java] 3 / 2=1.5
-
-
-Building And Running The Sample Using Maven 
--------------------------------------------
-With either the binary or source distributions the sample can be built and run 
-using Maven as follows. When running from Maven the four nodes all run within 
-Java virtual machine. 
-
-cd calculator-distributed
-mvn
-
-You should see the following output from the test phase.
-
--------------------------------------------------------
- T E S T S
--------------------------------------------------------
-Running calculator.DomainInMemoryTestCase
-Setting up distributed nodes
-file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/target/class
-es/management/
-log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX
-Utils).
-log4j:WARN Please initialize the log4j system properly.
-23-Aug-2007 18:18:41 org.apache.tuscany.sca.assembly.builder.impl.CompositeBuild
-erImpl$1 problem
-WARNING: [WARNING] Component reference target not found, it might be a remote se
-rvice: AddServiceComponent null
-
-23-Aug-2007 18:18:41 org.apache.tuscany.sca.assembly.builder.impl.CompositeBuild
-erImpl$1 problem
-WARNING: [WARNING] Component reference target not found, it might be a remote se
-rvice: SubtractServiceComponent null
-
-file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/target/class
-es/management/
-Registering service: [mydomain nodeB AddServiceComponent org.apache.tuscany.sca.
-assembly.SCABinding http://localhost:8085/AddServiceComponent]
-file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/target/class
-es/management/
-Registering service: [mydomain nodeC SubtractServiceComponent org.apache.tuscany
-.sca.assembly.SCABinding http://localhost:8086/SubtractServiceComponent]
-Finding service: [mydomain SubtractServiceComponent org.apache.tuscany.sca.assem
-bly.SCABinding]
-Matching service url: http://localhost:8086/SubtractServiceComponent
-Finding service: [mydomain AddServiceComponent org.apache.tuscany.sca.assembly.S
-CABinding]
-Matching service url: http://localhost:8085/AddServiceComponent
-23-Aug-2007 18:18:45 org.apache.tuscany.sca.http.jetty.JettyServer addServletMap
-ping
-INFO: Added Servlet mapping: http://localhost:8085/AddServiceComponent
-23-Aug-2007 18:18:47 org.apache.tuscany.sca.http.jetty.JettyServer addServletMap
-ping
-INFO: Added Servlet mapping: http://localhost:8086/SubtractServiceComponent
-CalculatorService - add 3.0 and 2.0
-AddService - add 3.0 and 2.0
-CalculatorService - subtract 3.0 and 2.0
-SubtractService - subtract 3.0 and 2.0
-CalculatorService - multiply 3.0 and 2.0
-CalculatorService - divide 3.0 and 2.0
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.14 sec
-
-Results :
-
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
-
-
-This shows that the Junit test cases have run successfully. 
-
-Known Bug : 
----------
-The processes that are running NodeB and NodeC do not seem to end on pressing the
-<Enter>.  This will be fixed for the next release.  For this release you should use
-^C (Control C) to exit these processes.
-
-
diff --git a/samples/domain-webapp/build.xml b/samples/domain-webapp/build.xml
deleted file mode 100644
index d1fc762..0000000
--- a/samples/domain-webapp/build.xml
+++ /dev/null
@@ -1,294 +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.    
--->
-<project name="calculator" default="runDomainNode">
-    <property name="node.class" value="node.CalculatorNode" />
-	<property name="domain.class" value="node.DomainNode" />
-	<property name="test.jar"   value="sample-calculator-distributed.jar" 
-/>
-	
-    <target name="init">
-        <mkdir dir="target/classes"/>
-    </target>
-	
-    <target name="compile" depends="init">
-        <javac srcdir="src/main/java"
-               destdir="target/classes"
-               debug="on"
-               source="1.5"
-               target="1.5">
-            <classpath>
-            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
-            </classpath>
-        </javac> 
-        <copy todir="target/classes">
-            <fileset dir="src/main/resources"/>
-        </copy>
-        <jar destfile="target/${test.jar}" basedir="target/classes">
-            <manifest>
-                <attribute name="Main-Class" value="${test.class}" /> 
-            </manifest>
-        </jar>    	
-    </target>
-	
-    <target name="runDomainNode">
-        <java classname="${domain.class}"
-              fork="true">
-            <classpath>
-            	<pathelement path="src/main/resources"/>
-                <pathelement path="target/classes"/>
-            	<pathelement path="target/${test.jar}"/>
-            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
-            </classpath>    	        	
-        </java>
-    </target>
-	
-    <target name="runNodeA">
-        <java classname="${node.class}"
-              fork="true">
-            <classpath>
-            	<pathelement path="src/main/resources"/>
-                <pathelement path="target/classes"/>
-            	<pathelement path="target/${test.jar}"/>
-            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
-            </classpath>
-        	<arg value="mydomain"/>
-        	<arg value="nodeA"/>        	        	
-        </java>
-    </target>
-	
-    <target name="runNodeB">
-        <java classname="${node.class}"
-              fork="true">
-            <classpath>
-            	<pathelement path="src/main/resources"/>
-                <pathelement path="target/classes"/>
-            	<pathelement path="target/${test.jar}"/>
-            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
-            </classpath>
-        	<arg value="mydomain"/>
-        	<arg value="nodeB"/>        	
-        </java>
-    </target>	
-	
-    <target name="runNodeC">
-        <java classname="${node.class}"
-              fork="true">
-            <classpath>
-            	<pathelement path="src/main/resources"/>
-                <pathelement path="target/classes"/>
-            	<pathelement path="target/${test.jar}"/>
-            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
-            </classpath>
-        	<arg value="mydomain"/>
-        	<arg value="nodeC"/>        	
-        </java>
-    </target>	
-	
-    <target name="clean">
-        <delete dir="target" includeemptydirs="true"/>
-    </target>	
-	
-	<!-- If you want to test without building the distribution jars set the       -->
-	<!-- localtion value of the m2.repo on your machine and use the targets below -->
-	<property name="m2.repo"   value="your dir here\.m2\repository" />
-    <path id="repo.classpath">
-        <!--pathelement location="${classpath}"/-->
-    	<!--pathelement location="${m2.repo}\annogen\annogen\0.1.0\annogen-0.1.0.jar"/>
-        <pathelement location="${m2.repo}\avalon-framework\avalon-framework\4.1.3\avalon-framework-4.1.3.jar"/>
-        <pathelement location="${m2.repo}\backport-util-concurrent\backport-util-concurrent\2.2\backport-util-concurrent-2.2.jar"/>
-        <pathelement location="${m2.repo}\cglib\cglib-nodep\2.1_3\cglib-nodep-2.1_3.jar"/>
-    	<pathelement location="${m2.repo}\com\metaparadigm\json-rpc\1.0\json-rpc-1.0.jar"/>
-        <pathelement location="${m2.repo}\commons-codec\commons-codec\1.3\commons-codec-1.3.jar"/>
-        <pathelement location="${m2.repo}\commons-fileupload\commons-fileupload\1.1.1\commons-fileupload-1.1.1.jar"/>
-        <pathelement location="${m2.repo}\commons-httpclient\commons-httpclient\3.0.1\commons-httpclient-3.1.jar"/>
-        <pathelement location="${m2.repo}\commons-io\commons-io\1.1\commons-io-1.1.jar"/>
-        <pathelement location="${m2.repo}\commons-logging\commons-logging\1.1\commons-logging-1.1.jar"/>
-        <pathelement location="${m2.repo}\javax\activation\activation\1.1\activation-1.1.jar"/>
-        <pathelement location="${m2.repo}\javax\mail\mail\1.4\mail-1.4.jar"/>
-    	<pathelement location="${m2.repo}\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar"/>
-        <pathelement location="${m2.repo}\jaxen\jaxen\1.1-beta-9\jaxen-1.1-beta-9.jar"/>
-        <pathelement location="${m2.repo}\log4j\log4j\1.2.12\log4j-1.2.12.jar"/>
-        <pathelement location="${m2.repo}\logkit\logkit\1.0.1\logkit-1.0.1.jar"/>
-        <pathelement location="${m2.repo}\org\apache\ant\ant\1.7.0\ant-1.7.0.jar"/>
-        <pathelement location="${m2.repo}\org\apache\ant\ant-launcher\1.7.0\ant-launcher-1.7.0.jar"/>
-        <pathelement location="${m2.repo}\org\apache\axis2\axis2-java2wsdl\1.2\axis2-java2wsdl-1.2.jar"/>
-        <pathelement location="${m2.repo}\org\apache\axis2\axis2-kernel\1.2\axis2-kernel-1.2.jar"/>
-        <pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-commonj_1.1_spec\1.0\geronimo-commonj_1.1_spec-1.0.jar"/>
-        <pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-jms_1.1_spec\1.1\geronimo-jms_1.1_spec-1.1.jar"/>
-        <pathelement location="${m2.repo}\org\apache\httpcomponents\jakarta-httpcore\4.0-alpha4\jakarta-httpcore-4.0-alpha4.jar"/>
-        <pathelement location="${m2.repo}\org\apache\neethi\neethi\2.0.1\neethi-2.0.1.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\sca-api\1.7-SNAPSHOT\sca-api-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-assembly\1.7-SNAPSHOT\tuscany-assembly-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-assembly-xml\1.7-SNAPSHOT\tuscany-assembly-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca\1.7-SNAPSHOT\tuscany-binding-sca-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca-axis2\1.7-SNAPSHOT\tuscany-binding-sca-axis2-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca-xml\1.7-SNAPSHOT\tuscany-binding-sca-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws\1.7-SNAPSHOT\tuscany-binding-ws-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws-axis2\1.7-SNAPSHOT\tuscany-binding-ws-axis2-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws-xml\1.7-SNAPSHOT\tuscany-binding-ws-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution\1.7-SNAPSHOT\tuscany-contribution-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-impl\1.7-SNAPSHOT\tuscany-contribution-impl-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-java\1.7-SNAPSHOT\tuscany-contribution-java-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-namespace\1.7-SNAPSHOT\tuscany-contribution-namespace-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core\1.7-SNAPSHOT\tuscany-core-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core-databinding\1.7-SNAPSHOT\tuscany-core-databinding-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core-spi\1.7-SNAPSHOT\tuscany-core-spi-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-databinding\1.7-SNAPSHOT\tuscany-databinding-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-databinding-axiom\1.7-SNAPSHOT\tuscany-databinding-axiom-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-distributed\1.7-SNAPSHOT\tuscany-distributed-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-distributed-impl\1.7-SNAPSHOT\tuscany-distributed-impl-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-embedded\1.7-SNAPSHOT\tuscany-host-embedded-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-http\1.7-SNAPSHOT\tuscany-host-http-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-tomcat\1.7-SNAPSHOT\tuscany-host-jetty-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-implementation-java\1.7-SNAPSHOT\tuscany-implementation-java-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-implementation-java-runtime\1.7-SNAPSHOT\tuscany-implementation-java-runtime-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-implementation-java-xml\1.7-SNAPSHOT\tuscany-implementation-java-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface\1.7-SNAPSHOT\tuscany-interface-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-java\1.7-SNAPSHOT\tuscany-interface-java-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-java-xml\1.7-SNAPSHOT\tuscany-interface-java-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-wsdl\1.7-SNAPSHOT\tuscany-interface-wsdl-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-wsdl-xml\1.7-SNAPSHOT\tuscany-interface-wsdl-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-policy\1.7-SNAPSHOT\tuscany-policy-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-policy-xml\1.7-SNAPSHOT\tuscany-policy-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-topology\1.7-SNAPSHOT\tuscany-topology-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-topology-xml\1.7-SNAPSHOT\tuscany-topology-xml-1.7-SNAPSHOT.jar"/>
-        <pathelement location="${m2.repo}\org\apache\woden\woden\1.0-incubating-M7a\woden-1.0-incubating-M7a.jar"/>
-        <pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-api\1.2.4\axiom-api-1.2.4.jar"/>
-        <pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-dom\1.2.4\axiom-dom-1.2.4.jar"/>
-        <pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-impl\1.2.4\axiom-impl-1.2.4.jar"/>
-        <pathelement location="${m2.repo}\org\apache\ws\commons\schema\XmlSchema\1.3.1\XmlSchema-1.3.1.jar"/>
-        <pathelement location="${m2.repo}\org\codehaus\woodstox\wstx-asl\3.2.1\wstx-asl-3.2.1.jar"/>
-        <pathelement location="${m2.repo}\stax\stax-api\1.0.1\stax-api-1.0.1.jar"/>
-        <pathelement location="${m2.repo}\wsdl4j\wsdl4j\1.6.2\wsdl4j-1.6.2.jar"/>
-        <pathelement location="${m2.repo}\xerces\xercesImpl\2.8.1\xercesImpl-2.8.1.jar"/>
-        <pathelement location="${m2.repo}\xml-apis\xml-apis\1.3.03\xml-apis-1.3.03.jar"/>    	
-    	<pathelement location="target/classes"/-->  
-    	<pathelement location="${m2.repo}\annogen\annogen\0.1.0\annogen-0.1.0.jar"/>
-    	<pathelement location="${m2.repo}\avalon-framework\avalon-framework\4.1.3\avalon-framework-4.1.3.jar"/>
-    	<pathelement location="${m2.repo}\backport-util-concurrent\backport-util-concurrent\2.2\backport-util-concurrent-2.2.jar"/>
-    	<pathelement location="${m2.repo}\cglib\cglib-nodep\2.1_3\cglib-nodep-2.1_3.jar"/>
-    	<pathelement location="${m2.repo}\com\metaparadigm\json-rpc\1.0\json-rpc-1.0.jar"/>
-    	<pathelement location="${m2.repo}\commons-codec\commons-codec\1.3\commons-codec-1.3.jar"/>
-    	<pathelement location="${m2.repo}\commons-fileupload\commons-fileupload\1.1.1\commons-fileupload-1.1.1.jar"/>
-    	<pathelement location="${m2.repo}\commons-httpclient\commons-httpclient\3.0.1\commons-httpclient-3.0.1.jar"/>
-    	<pathelement location="${m2.repo}\commons-io\commons-io\1.1\commons-io-1.1.jar"/>
-    	<pathelement location="${m2.repo}\commons-logging\commons-logging\1.1\commons-logging-1.1.jar"/>
-    	<pathelement location="${m2.repo}\javax\activation\activation\1.1\activation-1.1.jar"/>
-    	<pathelement location="${m2.repo}\javax\mail\mail\1.4\mail-1.4.jar"/>
-    	<pathelement location="${m2.repo}\jaxen\jaxen\1.1-beta-9\jaxen-1.1-beta-9.jar"/>
-    	<pathelement location="${m2.repo}\log4j\log4j\1.2.12\log4j-1.2.12.jar"/>
-    	<pathelement location="${m2.repo}\logkit\logkit\1.0.1\logkit-1.0.1.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\ant\ant\1.7.0\ant-1.7.0.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\ant\ant-launcher\1.7.0\ant-launcher-1.7.0.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-adb\1.2\axis2-adb-1.2.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-java2wsdl\1.2\axis2-java2wsdl-1.2.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-kernel\1.2\axis2-kernel-1.2.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-commonj_1.1_spec\1.0\geronimo-commonj_1.1_spec-1.0.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-jms_1.1_spec\1.1\geronimo-jms_1.1_spec-1.1.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\httpcomponents\jakarta-httpcore\4.0-alpha4\jakarta-httpcore-4.0-alpha4.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\neethi\neethi\2.0.1\neethi-2.0.1.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\sca-api\1.7-SNAPSHOT\sca-api-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-assembly\1.7-SNAPSHOT\tuscany-assembly-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-assembly-xml\1.7-SNAPSHOT\tuscany-assembly-xml-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-http\1.7-SNAPSHOT\tuscany-binding-http-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-jsonrpc\1.7-SNAPSHOT\tuscany-binding-jsonrpc-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca\1.7-SNAPSHOT\tuscany-binding-sca-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca-axis2\1.7-SNAPSHOT\tuscany-binding-sca-axis2-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca-xml\1.7-SNAPSHOT\tuscany-binding-sca-xml-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws\1.7-SNAPSHOT\tuscany-binding-ws-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws-axis2\1.7-SNAPSHOT\tuscany-binding-ws-axis2-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws-xml\1.7-SNAPSHOT\tuscany-binding-ws-xml-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution\1.7-SNAPSHOT\tuscany-contribution-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-impl\1.7-SNAPSHOT\tuscany-contribution-impl-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-java\1.7-SNAPSHOT\tuscany-contribution-java-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-namespace\1.7-SNAPSHOT\tuscany-contribution-namespace-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core\1.7-SNAPSHOT\tuscany-core-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core-databinding\1.7-SNAPSHOT\tuscany-core-databinding-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core-spi\1.7-SNAPSHOT\tuscany-core-spi-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-databinding\1.7-SNAPSHOT\tuscany-databinding-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-databinding-axiom\1.7-SNAPSHOT\tuscany-databinding-axiom-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-distributed\1.7-SNAPSHOT\tuscany-distributed-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-distributed-impl\1.7-SNAPSHOT\tuscany-distributed-impl-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-extension-helper\1.7-SNAPSHOT\tuscany-extension-helper-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-embedded\1.7-SNAPSHOT\tuscany-host-embedded-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-http\1.7-SNAPSHOT\tuscany-host-http-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface\1.7-SNAPSHOT\tuscany-interface-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-java\1.7-SNAPSHOT\tuscany-interface-java-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-java-xml\1.7-SNAPSHOT\tuscany-interface-java-xml-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-wsdl\1.7-SNAPSHOT\tuscany-interface-wsdl-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-wsdl-xml\1.7-SNAPSHOT\tuscany-interface-wsdl-xml-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-policy\1.7-SNAPSHOT\tuscany-policy-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-policy-xml\1.7-SNAPSHOT\tuscany-policy-xml-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-topology\1.7-SNAPSHOT\tuscany-topology-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-topology-xml\1.7-SNAPSHOT\tuscany-topology-xml-1.7-SNAPSHOT.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\woden\woden\1.0-incubating-M7a\woden-1.0-incubating-M7a.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-api\1.2.4\axiom-api-1.2.4.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-dom\1.2.4\axiom-dom-1.2.4.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-impl\1.2.4\axiom-impl-1.2.4.jar"/>
-    	<pathelement location="${m2.repo}\org\apache\ws\commons\schema\XmlSchema\1.3.1\XmlSchema-1.3.1.jar"/>
-    	<pathelement location="${m2.repo}\org\codehaus\woodstox\wstx-asl\3.2.1\wstx-asl-3.2.1.jar"/>
-    	<pathelement location="${m2.repo}\stax\stax-api\1.0.1\stax-api-1.0.1.jar"/>
-    	<pathelement location="${m2.repo}\wsdl4j\wsdl4j\1.6.2\wsdl4j-1.6.2.jar"/>
-    	<pathelement location="${m2.repo}\xerces\xercesImpl\2.8.1\xercesImpl-2.8.1.jar"/>
-    	<pathelement location="${m2.repo}\xml-apis\xml-apis\1.3.03\xml-apis-1.3.03.jar"/>    	
-    </path>	
-    	
-    <target name="runDomainNodeRepo">
-        <java classname="${domain.class}"
-              fork="true">
-            <classpath>
-            	<path refid="repo.classpath"/>
-            </classpath>    	        	
-        </java>
-    </target>
-	
-    <target name="runNodeARepo">
-        <java classname="${node.class}"
-              fork="true">
-            <classpath>
-            	<path refid="repo.classpath"/>
-            </classpath>
-        	<arg value="mydomain"/>
-        	<arg value="nodeA"/>        	        	
-        </java>
-    </target>
-	
-    <target name="runNodeBRepo">
-        <java classname="${node.class}"
-              fork="true">
-            <classpath>
-            	<path refid="repo.classpath"/>
-            </classpath>
-        	<arg value="mydomain"/>
-        	<arg value="nodeB"/>        	
-        </java>
-    </target>	
-	
-    <target name="runNodeCRepo">
-        <java classname="${node.class}"
-              fork="true">
-            <classpath>
-            	<path refid="repo.classpath"/>
-            </classpath>
-        	<arg value="mydomain"/>
-        	<arg value="nodeC"/>        	
-        </java>
-    </target>	
-	
-</project>
diff --git a/samples/domain-webapp/pom.xml b/samples/domain-webapp/pom.xml
deleted file mode 100644
index cfc4d09..0000000
--- a/samples/domain-webapp/pom.xml
+++ /dev/null
@@ -1,101 +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>
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.tuscany.sca</groupId>
-        <artifactId>tuscany-samples</artifactId>
-        <version>1.7-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
-    </parent>
-    <artifactId>sample-domain-webapp</artifactId>
-    <name>Apache Tuscany SCA Domain Webapp Sample</name>
-
-    <repositories>
-       <repository>
-          <id>apache.incubator</id>
-          <url>http://people.apache.org/repo/m2-incubating-repository</url>
-       </repository>
-    </repositories>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-host-tomcat</artifactId>
-            <version>1.7-SNAPSHOT</version>
-        </dependency>
-            
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-host-embedded</artifactId>
-            <version>1.7-SNAPSHOT</version>
-        </dependency>
- 
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-node-impl</artifactId>
-            <version>1.7-SNAPSHOT</version>
-        </dependency>      
-        
-         <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-domain-impl</artifactId>
-            <version>1.7-SNAPSHOT</version>
-        </dependency>
-                                      
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-binding-jsonrpc</artifactId>
-            <version>1.7-SNAPSHOT</version>
-        </dependency>   
-        
-         <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-binding-sca-axis2</artifactId>
-            <version>1.7-SNAPSHOT</version>
-        </dependency> 
-        
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-binding-http</artifactId>
-            <version>1.7-SNAPSHOT</version>
-            <scope>runtime</scope>
-        </dependency>        
-        
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-implementation-resource</artifactId>
-            <version>1.7-SNAPSHOT</version>
-            <scope>runtime</scope>
-        </dependency>                 
-        
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.2</version>
-            <scope>test</scope>
-        </dependency>
-                
-    </dependencies>
-
-    <build>
-       <finalName>${artifactId}</finalName>
-    </build>
-</project>
diff --git a/samples/domain-webapp/src/main/java/node/DomainServer.java b/samples/domain-webapp/src/main/java/node/DomainServer.java
deleted file mode 100644
index ea3cddc..0000000
--- a/samples/domain-webapp/src/main/java/node/DomainServer.java
+++ /dev/null
@@ -1,54 +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 node;
-
-import java.io.IOException;
-
-
-/**
- * This server program that loads a composite to provide simple registry function.
- * This server can be replaced with any registry that is appropriate but the components
- * in each node that talk to the registry should be replaced also. 
- */
-public class DomainServer {
-
-    public static void main(String[] args) {
-        try {
-/*            
-            NodeImpl node = new NodeImpl();
-            node.start();
-            node.getContributionManager().startContribution(DomainServer.class.getClassLoader().getResource("."));
-    
-            try {
-                System.out.println("Domain server started (press enter to shutdown)");
-                System.in.read();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-    
-            node.stop();
-            System.out.println("Domain server stopped");
-*/            
-        } catch (Exception ex) {
-            System.out.println("Exception in domain server " + 
-                               ex.toString());
-        }
-    }
-
-}
diff --git a/samples/domain-webapp/src/main/resources/META-INF/sca-contribution.xml b/samples/domain-webapp/src/main/resources/META-INF/sca-contribution.xml
deleted file mode 100755
index 95e10e4..0000000
--- a/samples/domain-webapp/src/main/resources/META-INF/sca-contribution.xml
+++ /dev/null
@@ -1,23 +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://www.osoa.org/xmlns/sca/1.0"
-              xmlns:sample="http://sample">
-   <deployable composite="sample:Domain"/>
-</contribution>
\ No newline at end of file
diff --git a/samples/domain-webapp/src/main/resources/domain.composite b/samples/domain-webapp/src/main/resources/domain.composite
deleted file mode 100644
index dbaaebd..0000000
--- a/samples/domain-webapp/src/main/resources/domain.composite
+++ /dev/null
@@ -1,54 +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://www.osoa.org/xmlns/sca/1.0"
-           targetNamespace="http://sample"
-           xmlns:sample="http://sample"
-           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
-           name="Domain">
-           
-    <component name="domain">
-        <service name="Resource">
-            <tuscany:binding.http/>
-        </service>
-       <tuscany:implementation.resource location="webroot"/>
-    </component>            
-           
-    <component name="DomainManagerComponent">
-        <implementation.java class="org.apache.tuscany.sca.domain.impl.DomainManagerServiceImpl"/>
-        <service name="DomainManagerService">
-            <interface.java interface="org.apache.tuscany.sca.domain.DomainManagerService"/>
-            <binding.ws uri="http://localhost:8080/DomainManagerComponent/DomainManager"/>
-            <tuscany:binding.jsonrpc uri="http://localhost:8080/DomainManagerComponent/DomainManagerJson"/>
-        </service>
-        <reference name="serviceDiscovery" target="ServiceDiscoveryComponent"/>
-
-    </component>
-    
-    <component name="ServiceDiscoveryComponent">
-        <implementation.java class="org.apache.tuscany.sca.domain.impl.ServiceDiscoveryServiceImpl" />
-        <service name="ServiceDiscoveryService">
-            <interface.java interface="org.apache.tuscany.sca.domain.ServiceDiscoveryService"/>
-            <binding.sca uri="http://localhost:8080/ServiceDiscoveryComponent/ServiceDiscoverySCA"/>
-            <binding.ws uri="http://localhost:8080/ServiceDiscoveryComponent/ServiceDiscovery"/>
-            <tuscany:binding.jsonrpc uri="http://localhost:8080/ServiceDiscoveryComponent/ServiceDiscoveryJson"/>            
-        </service>
-    </component>
-    
-</composite>
diff --git a/samples/domain-webapp/src/main/resources/webroot/index.html b/samples/domain-webapp/src/main/resources/webroot/index.html
deleted file mode 100644
index 425bd73..0000000
--- a/samples/domain-webapp/src/main/resources/webroot/index.html
+++ /dev/null
@@ -1,354 +0,0 @@
-<html>
-<!--
- * 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.    
- -->
-<head>
-<title>Apache Tuscany Domain</TITLE>
-
-    <script type="text/javascript" src="../SCADomain/scaDomain.js"></script>
-
-    <script language="JavaScript">
-    
-       domainManager = new JSONRpcClient("../DomainManagerComponent/DomainManagerJson");
-
-       function getNodeInfo() {
-          domainManager.DomainManagerService.getNodeInfo(handleGetNodeInfo);
-       }
-       
-       function handleGetNodeInfo(result) {
-       
-          var text = ""
-          
-          for (var i in result.list){
-              var node = result.list[i];
-              
-              text = text + "<table>";
-              text = text + "<TR CLASS='source_1' >";
-              text = text + "  <TD>";
-              text = text + "    <IMG SRC='node.png'/>&nbsp;&nbsp;" + node.domainUri;
-              text = text + "  </TD>";
-              
-              var noProtocol = node.nodeManagerUrl.substring(7);
-              var colonPos = noProtocol.indexOf(':')
-              var nodeManagerWebUrl = noProtocol.substring(0, colonPos + 6);
-              nodeManagerWebUrl = "http://" + nodeManagerWebUrl + "node/index.html";
-              
-              text = text + "  <TD CLASS='clickable link' ONCLICK=\"showNode('" + nodeManagerWebUrl + "')\">" + node.nodeUri + "</TD>";
-              text = text + "</TR>";               
-          }
-
-          document.getElementById('domainInfo').innerHTML=text;
-       }
-       
-        function showNode(url)
-        {
-            document.getElementById("nodePage").innerHTML="<IFRAME CLASS='alert_data' SRC='"+url+"'/>";
-            window.location="#data";
-            return;    
-        }       
-
-    </script>
-
-    <link rel="stylesheet" type="text/css" href="style.css" />
-</head>
-
-<body onload="getNodeInfo()">
-
-<!--script type="text/javascript">
-    
-        // The proxy for the alert and alertsources services running in Tuscany
-        var alertsService       = new dojo.rpc.JsonService("AlertsServiceJSONRPC?smd");
-        var alertSourcesService = new dojo.rpc.JsonService("AlertsSourcesServiceJSONRPC?smd");
-
-        // If you want to put an HTTP sniffer in the way to look at the JSONROPC packets you'll
-        // need to edit the target address of the service in the smd. The only way to do this easily
-        // is to read an smd from disc rather than generate one. There are two smds provided for this
-	    //var alertsService       = new dojo.rpc.JsonService("service.smd");
-        //var alertSourcesService = new dojo.rpc.JsonService("sources.smd");
-
-        // The global list of alerts sources
-        var alertSourceList = null;
-
-        // The global list of alerts 
-        var alertList       = null;
-
-        // the constructor for entries on the alert source list
-        function alertSourceType(name,id,address,feedAddress,feedType,popUsername,popPassword,popServer,lastChecked,javaClass) {
-          this.name        = name;
-          this.id          = id;
-          this.address     = address;
-          this.feedAddress = feedAddress;
-          this.feedType    = feedType;
-          this.lastChecked = lastChecked;
-          this.javaClass   = "org.apache.tuscany.sca.demos.aggregator.types.impl.SourceTypeImpl";
-
-        }
-
-        function errorCallback(result, error, id) {
-            var resultsNode = document.getElementById("errors");
-            // There seems to be a problem somewhere as I should be able to get the error
-            // details but all I can actually get is the Id from the error message
-            // resultsNode.innerHTML = "there was an error! message id = "  + " error code = " + result.error.code + " error message = " + result.error.msg ;
-           resultsNode.innerHTML = "An error was returned by the server. Message id = " +  result.id;
-        }
-
-        // Generate the alert sources table
-        function getAlertSources()
-        { 
-            response = alertSourcesService.getAlertSources("Dojo");
-            response.addCallbacks(getAlertSourcesCallback, errorCallback);
-
-            getAlerts();
-        }
-
-        function getAlertSourcesCallback(result) {
-            var resultsNode = document.getElementById("alertSourcesTable");
-            if ( result.error != null ) {
-                resultsNode.innerHTML = result.error;
-            } else {
-                // stash away the source list for when we come to edit it
-                alertSourceList = result.source.list;
-
-                // put out the html
-                var text = ""
-                var nextSourceId = 0
-                for (var i in result.source.list){
-                    var source = result.source.list[i];
-
-                    text = text + "<table>";
-                    text = text + "<TR CLASS='source_" + source.id + "' >";
-                    text = text + "  <TD CLASS='source_name clickable' ONCLICK=\"displayAlert('" + source.address + "')\">";
-                    text = text + "    <IMG SRC='rss.png'/>&nbsp;&nbsp;" + source.name;
-                    text = text + "  </TD>";
-                    text = text + "  <TD CLASS='clickable link' ONCLICK=\"showEditSource('" + source.id + "')\">Edit</TD>";
-                    text = text + "  <TD CLASS='clickable link' ONCLICK=\"deleteSource('" + source.id + "')\">Delete</TD>";
-                    text = text + "</TR>";
-                    text = text + "<TR ID='edit_source_" + source.id + "' CLASS='hidden source_" + source.id + "'>";
-                    text = text + "  <TD COLSPAN='3'>";
-                    text = text + "    <TABLE CLASS='sourceDetailsTable'>";
-                    text = text + "      <TR>";
-                    text = text + "        <TD>Source name:</TD>";
-                    text = text + "        <TD>";
-                    text = text + "          <INPUT ID='source_" + source.id + "_name' TYPE='TEXT' SIZE='50' VALUE='" + source.name + "'/>";
-                    text = text + "        </TD>";
-                    text = text + "      </TR>";
-                    text = text + "      <TR>";
-                    text = text + "       <TD>Source address:</TD>"
-                    text = text + "        <TD>";
-                    text = text + "          <INPUT ID='source_" + source.id + "_address' TYPE='TEXT' SIZE='50' VALUE='" + source.address + "'/>";
-                    text = text + "        </TD>";
-                    text = text + "      </TR>";
-                    text = text + "      <TR>";
-                    text = text + "        <TD>";
-                    text = text + "          <INPUT ID='source_" + source.id + "_type' TYPE='HIDDEN' VALUE='" + source.id + "'/>";
-                    text = text + "          <INPUT TYPE='BUTTON' VALUE='Update' ONCLICK=\"updateSource('" + source.id + "')\"/>";
-                    text = text + "          <INPUT TYPE='BUTTON' VALUE='Cancel' ONCLICK=\"hideEditSource('" + source.id + "')\"/>";
-                    text = text + "        </TD>";
-                    text = text + "      </TR>";
-                    text = text + "    </TABLE>";
-                    text = text + "  </TD>";
-                    text = text + "</TR>";
-               
-                    nextSourceId = eval(source.id);
-                }
-
-                nextSourceId = nextSourceId + 1;
-
-                text = text + "<TR CLASS='source_" + nextSourceId + "'>";
-                text = text + "  <TD COLSPAN='4' CLASS='clickable link' ONCLICK=\"showAddNewSource('" + nextSourceId + "')\">Add new Alert Source</TD>";
-                text = text + "</TR>";
-                text = text + "<TR ID='add_source_" + nextSourceId + "' CLASS='hidden source_" + nextSourceId + "'>";
-                text = text + "  <TD COLSPAN='4'>";
-                text = text + "    <TABLE CLASS='sourceDetailsTable'>";
-                text = text + "      <TR>";
-                text = text + "        <TD>Source name:</TD>";
-                text = text + "        <TD>";
-                text = text + "          <INPUT ID='source_" + nextSourceId + "_name' TYPE='TEXT' SIZE='50'>";
-                text = text + "        </TD>";
-                text = text + "      </TR>";
-                text = text + "      <TR>";
-                text = text + "        <TD>Source address:</TD>";
-                text = text + "        <TD>";
-                text = text + "          <INPUT ID='source_" + nextSourceId + "_address' TYPE='TEXT' SIZE='50'>";
-                text = text + "        </TD>";
-                text = text + "      </TR>";
-                text = text + "      <TR>";
-                text = text + "        <TD>Source type:</TD>";
-                text = text + "        <TD>";
-                text = text + "          <SELECT ID='source_" + nextSourceId + "_type' ONCHANGE=\"showSourceType('" + nextSourceId + "')\">";
-                text = text + "            <OPTION value='rss' selected='selected'>RSS/Atom feed</OPTION>";
-                text = text + "          </SELECT>";
-                text = text + "        </TD>";
-                text = text + "      </TR>";
-                text = text + "      <TR ID='add_rss_source'>";
-                text = text + "        <TD COLSPAN='2'>";
-                text = text + "          <TABLE CLASS='sourceDetailsTable'>";
-                text = text + "            <TR>";
-                text = text + "              <TD>Feed address:</TD>";
-                text = text + "              <TD>";
-                text = text + "                 <INPUT ID='source_" + nextSourceId + "_feedAddress' TYPE='TEXT' SIZE='50'/>";
-                text = text + "              </TD>";
-                text = text + "            </TR>";
-                text = text + "          </TABLE>";
-                text = text + "        </TD>";
-                text = text + "      </TR>";
-                text = text + "      <TR>";
-                text = text + "        <TD>";
-                text = text + "          <INPUT TYPE='BUTTON' VALUE='Add' ONCLICK=\"addSource('" + nextSourceId + "')\">";
-                text = text + "          <INPUT TYPE='BUTTON' VALUE='Cancel' ONCLICK=\"hideAddNewSource('" + nextSourceId + "')\">";
-                text = text + "        </TD>";
-                text = text + "      </TR>";
-                text = text + "    </TABLE>";
-                text = text + "  </TD>";
-                text = text + "</TR>";
-                text = text + "</table>";
-
-                resultsNode.innerHTML = text;  
-            }
-        }
-
-        function showEditSource(sourceid)
-        {
-            document.getElementById("edit_source_"+sourceid).className = "source_"+sourceid;
-        }
-
-        function hideEditSource(sourceid)
-        {
-             document.getElementById("edit_source_"+sourceid).className = "hidden source_"+sourceid;
-        }
- 
-        function updateSource(sourceid)
-        {
-            hideEditSource(sourceid);
-            var source = getSource(sourceId);
-            alertSourcesService.updateAlertSource(source);
-            getAlertSources();
-        }
- 
-        function deleteSource(sourceid)
-        {
-            alertSourcesService.removeAlertSource(sourceid);
-            getAlertSources();
-        }
-
-        function showAddNewSource(sourceid)
-        {
-            document.getElementById("add_source_"+sourceid).className = "source_"+sourceid;
-        }
-
-        function hideAddNewSource(sourceid)
-        {
-            document.getElementById("add_source_"+sourceid).className = "hidden source_"+sourceid;
-        }
-
-        function addSource(sourceid)
-        {
-            hideAddNewSource(sourceid);
-            var source = getSource(sourceid);
-            alertSourcesService.addAlertSource(source); 
-
-            // wait a little before getting the list back from the server
-            setTimeout("getAlertSources()",1250);       
-        }
-
-        function getSource(sourceid)
-        {
-            var source = alertSourceList[sourceid];
-
-            if ( source == null ){
-                source = new alertSourceType("name","id","address","feedAddress","feedType","popUsername","popPassword","popServer","lastChecked","javaClass");
-                alertSourceList[sourceid] = source;
-            }
-            
-            source.name     = document.getElementById("source_"+sourceid+"_name").value;
-            source.id       = sourceid;
-            source.address  = document.getElementById("source_"+sourceid+"_address").value;
-            var typeElem    = document.getElementById("source_"+sourceid+"_type");
-            source.feedType = typeElem.options[typeElem.selectedIndex].value; 
-
-            if(source.feedType=="rss")
-            {
-                source.feedAddress = document.getElementById("source_"+sourceid+"_feedAddress").value;
-                
-            }
-            else if(source.feedType=="pop")
-            {
-                source.popServer   = document.getElementById("source_"+sourceid+"_popServer").value;
-                source.popUsername = document.getElementById("source_"+sourceid+"_popUsername").value;
-                source.popPassword = document.getElementById("source_"+sourceid+"_popPassword").value;
-            } 
-            return source;     
-        }
-
-        // Generate the alerts table
-        function getAlerts()
-        { 
-            response = alertsService.getAllNewAlerts("Dojo");
-            response.addCallbacks(getAlertsCallback, errorCallback);
-        }
-
-        function getAlertsCallback(result) {
-            var resultsNode = document.getElementById("alertsTable");
-            if ( result.error != null ) {
-                resultsNode.innerHTML = result.error;
-            } else {
-                alertList = result.alert.list;
-                var text = ""
-                for (var i in result.alert.list){
-                    var alert = result.alert.list[i];
-
-                    text = text + "<table>";
-                    text = text + "<TR class='source_" + alert.sourceId + " clickable' onclick=\"displayAlert('" + alert.address + "')\">";
-                    text = text + " <TD class='alert_text'>";
-                    text = text + "   <SPAN id='" + alert.id + "' class='unread_title'>" + alert.title + "</SPAN>";
-                    text = text + "   <SPAN class='summary'> - " + alert.summary.substring(0, 80)  + "...</SPAN>";
-                    text = text + " </TD>";
-                    text = text + " <TD>";
-                    text = text +     alert.date;
-                    text = text + "  </TD>"
-                    text = text + "</TR>"
-                    text = text + "</table>";
-                }
-
-                resultsNode.innerHTML = text;  
-            }
-        }
-
-
-
-        function displayAlert(url)
-        {
-            document.getElementById("alertData").innerHTML="<IFRAME CLASS='alert_data' SRC='"+url+"'/>";
-            window.location="#data";
-            return;    
-        }
-</script-->
-
-<h1 id="top">Apache Tuscany Domain</h1>
-<div id="errors"></div>
-
-<p>Domain Name<span id="domainName"></span>:</p>
-
-<div id="domainInfo"></div>
-
-<p /><input type="button" value="Refresh" onclick="getNodeInfo()" />
-
-<div id="nodePage"></div>
-
-</body>
-</html>
diff --git a/samples/domain-webapp/src/main/resources/webroot/node.png b/samples/domain-webapp/src/main/resources/webroot/node.png
deleted file mode 100644
index b3c949d..0000000
--- a/samples/domain-webapp/src/main/resources/webroot/node.png
+++ /dev/null
Binary files differ
diff --git a/samples/domain-webapp/src/main/resources/webroot/style.css b/samples/domain-webapp/src/main/resources/webroot/style.css
deleted file mode 100644
index f5bbf23..0000000
--- a/samples/domain-webapp/src/main/resources/webroot/style.css
+++ /dev/null
@@ -1,176 +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.
- */
-
-p,table,li,h1,h2,h3
-{
-font-family: verdana, arial, 'sans serif'; 
-}
-
-p, h1, h2, h3, table, li, hr
-{
-margin-left: 10pt;
-}
-
-table
-{
-border-color: black;
-border-collapse: separate;
-border-spacing: 0px 1px;
-
-margin-right: 10pt;
-margin-left: 10pt;
-width: 800px;
-}
-
-.sourceDetailsTable
-{
-width: 600px;
-}
-
-tr, td
-{
-margin-left: 0pt;
-margin-right: 0pt;
-padding-left: 10pt;
-font-size: 90%;
-}
-
-p,li,th
-{
-font-size: 90%;
-margin-left: 10pt;
-}
-
-pre
-{
-margin-left: 10pt;
-}
-
-body
-{
-#ffffff;
-}
-
-h1,h2,h3,hr
-{
-color: firebrick;
-}
-
-a:link {COLOR: firebrick;}
-a:visited {COLOR: firebrick;}
-a:active {COLOR: navy;}
-
-.link
-{
-COLOR: firebrick;
-text-decoration: underline;
-}
-
-.clickable
-{
-cursor: pointer
-}
-
-.unread_title
-{
-font-weight: bold;
-}
-
-.read_title
-{
-font-weight: normal;
-}
-
-.summary
-{
-color: DimGrey;
-}
-
-.hidden
-{
-display: none;
-}
-
-.source_name
-{
-width: 600px;
-}
-
-.alert_text
-{
-width: 600px;
-}
-
-.alert_data
-{
-margin-left: 10px;
-width: 800px;
-height: 800px;
-}
-
-.source_0
-{
-background-color: LightGreen;
-}    
-
-.source_1
-{
-background-color: LightSkyBlue;
-}
-
-.source_2
-{
-background-color: Khaki;
-}
-
-.source_3
-{
-background-color: LightPink;
-}
-
-.source_4
-{
-background-color: Orange;
-}
-
-.source_5
-{
-background-color: LightCoral;
-}
-
-.source_6
-{
-background-color: Orchid;
-}
-
-.source_7
-{
-background-color: Peru;
-}
-
-.source_8
-{
-background-color: SpringGreen;
-}
-
-.source_9
-{
-background-color: LightGrey;
-}
-
diff --git a/samples/pom-distribution.xml b/samples/pom-distribution.xml
deleted file mode 100644
index 12609a0..0000000
--- a/samples/pom-distribution.xml
+++ /dev/null
@@ -1,142 +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>
-    <!--
-       This file is a modified version of the samples/pom.xml file in
-       the svn source tree. This file is used as the pom.xml for the
-       samples directory in the binary distribution.  Any updates to
-       samples/pom.xml in the svn source tree must also be applied to
-       samples/pom-distribution.xml to keep these two files in sync
-       (except where marked).
-       
-       The samples directory of the binary distribution needs to contain
-       a pom.xml so that users can run "mvn eclipse:eclipse" to generate
-       Eclipse project files for all the samples.  We can't just copy the
-       samples pom.xml from the svn source tree to the binary distribution
-       because there are 10 samples in the svn source tree (and the source
-       distribution) that aren't included in the binary distribution.  This
-       mismatch is being tracked as issue TUSCANY-3678 and it should be
-       possible to remove this file when this issue is fixed.
-    -->
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.tuscany.sca</groupId>
-        <artifactId>tuscany-sca</artifactId>
-        <version>1.6.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>tuscany-samples-distribution</artifactId>
-    <packaging>pom</packaging>
-    <name>Apache Tuscany SCA Samples in Binary Distribution</name>
-
-    <repositories>
-        <repository>
-            <id>apache.incubator</id>
-            <url>http://people.apache.org/repo/m2-incubating-repository</url>
-        </repository>
-    </repositories>
-
-    <profiles>
-        <profile>
-            <id>default</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-            <modules>
-                <module>binding-echo</module>
-                <module>binding-echo-extension</module>
-                <module>binding-notification-broker</module>
-                <module>binding-notification-consumer</module>
-                <module>binding-notification-producer</module>
-                <module>calculator</module>
-                <module>calculator-corba-reference</module>
-                <module>calculator-corba-service</module>
-                <!-- the following is excluded from pom-distribution.xml
-                <module>calculator-lean</module -->
-                <module>calculator-distributed</module>
-                <module>calculator-implementation-policies</module>
-                <module>calculator-rmi-reference</module>
-                <module>calculator-rmi-service</module>
-                <module>calculator-script</module>
-                <module>calculator-webapp</module>
-                <!-- the following is excluded from pom-distribution.xml
-                <module>calculator-ws-secure-webapp</module -->
-                <module>calculator-ws-webapp</module>
-                <module>callback-ws-client</module>
-                <module>callback-ws-service</module>
-                <module>callbacks-jms</module>
-                <module>chat-webapp</module>
-                <!-- the following is excluded from pom-distribution.xml
-                <module>customer-dojo</module -->
-                <!-- the following is excluded from pom-distribution.xml
-                <module>customer-dojo-webapp</module -->
-                <module>databinding-echo</module>
-                <!--module>domain-webapp</module-->
-                <module>domain-management</module>
-                <module>feed-aggregator</module>
-                <module>feed-aggregator-webapp</module>
-                <module>helloworld-bpel</module>
-                <module>helloworld-dojo-webapp</module>
-                <module>helloworld-erlang-reference</module>
-                <module>helloworld-erlang-service</module>
-                <!-- the following is excluded from pom-distribution.xml
-                <module>helloworld-jms-webapp</module -->
-                <module>helloworld-jsonrpc-webapp</module>
-                <module>helloworld-reference-jms</module>
-                <module>helloworld-service-jms</module>
-                <module>helloworld-ws-service</module>
-                <module>helloworld-ws-service-jms</module>
-                <module>helloworld-ws-service-secure</module>
-                <module>helloworld-ws-reference</module>
-                <!-- the following is excluded from pom-distribution.xml
-                <module>helloworld-ws-reference-lean</module -->
-                <module>helloworld-ws-reference-jms</module>
-                <module>helloworld-ws-reference-secure</module>
-                <module>helloworld-ws-sdo</module>
-                <module>helloworld-ws-sdo-webapp</module>
-                <module>holder-ws-service</module>
-                <module>implementation-composite</module>
-                <module>implementation-crud</module>
-                <module>implementation-crud-extension</module>
-                <module>implementation-notification</module>
-                <module>implementation-pojo-extension</module>
-                <!-- the following is excluded from pom-distribution.xml
-                <module>loanapplication</module -->
-                <module>osgi-supplychain</module>
-                <module>photo-gallery</module>
-                <module>quote-xquery</module>
-                <module>simple-bigbank</module>
-                <module>simple-bigbank-spring</module>
-                <module>spring-bigbank-checkaccount</module>
-                <module>spring-bigbank-calculator</module>
-                <module>spring-bigbank-stockquote</module>
-                <module>simple-callback</module>
-                <module>simple-callback-ws</module>
-                <module>store</module>
-                <module>store-dojo</module>
-                <module>store-webapp</module>
-                <module>store-secure</module>
-                <module>supplychain</module>
-                <module>web-resource</module>
-                <!--module>zipcode-jaxws</module-->
-            </modules>
-        </profile>
-    </profiles>
-    
-</project>
diff --git a/samples/pom.xml b/samples/pom.xml
index 0400bd1..c96f7f4 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -18,22 +18,6 @@
  * under the License.    
 -->
 <project>
-    <!--
-       The pom-distribution.xml file in this directory is a modified version
-       of this pom.xml file and is used as the pom.xml for the samples
-       directory of the binary distribution.  Any updates to this pom.xml
-       file must be applied to pom-distribution.xml to keep the two files
-       in sync (except where marked).
-       
-       The samples directory of the binary distribution needs to contain
-       a pom.xml so that users can run "mvn eclipse:eclipse" to generate
-       Eclipse project files for all the samples.  We can't just copy the
-       samples pom.xml from the svn source tree to the binary distribution
-       because there are 10 samples in the svn source tree (and the source
-       distribution) that aren't included in the binary distribution.  This
-       mismatch is being tracked as issue TUSCANY-3678 and it should be
-       possible to remove pom-distribution.xml when this issue is fixed.
-    -->
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.tuscany.sca</groupId>
@@ -67,27 +51,22 @@
                 <module>calculator</module>
                 <module>calculator-corba-reference</module>
                 <module>calculator-corba-service</module>
-                <!-- the following is excluded from pom-distribution.xml -->
-                <module>calculator-lean</module>
+                <module>calculator-lean</module> <!-- not released in 1.6.1 -->
                 <module>calculator-distributed</module>
                 <module>calculator-implementation-policies</module>
                 <module>calculator-rmi-reference</module>
                 <module>calculator-rmi-service</module>
                 <module>calculator-script</module>
                 <module>calculator-webapp</module>
-                <!-- the following is excluded from pom-distribution.xml -->
-                <module>calculator-ws-secure-webapp</module>
+                <module>calculator-ws-secure-webapp</module> <!-- not released in 1.6.1 -->
                 <module>calculator-ws-webapp</module>
                 <module>callback-ws-client</module>
                 <module>callback-ws-service</module>
                 <module>callbacks-jms</module>
                 <module>chat-webapp</module>
-                <!-- the following is excluded from pom-distribution.xml -->
-                <module>customer-dojo</module>
-                <!-- the following is excluded from pom-distribution.xml -->
-                <module>customer-dojo-webapp</module>
+                <module>customer-dojo</module> <!-- not released in 1.6.1 -->
+                <module>customer-dojo-webapp</module> <!-- not released in 1.6.1 -->
                 <module>databinding-echo</module>
-                <!--module>domain-webapp</module-->
                 <module>domain-management</module>
                 <module>feed-aggregator</module>
                 <module>feed-aggregator-webapp</module>
@@ -95,8 +74,7 @@
                 <module>helloworld-dojo-webapp</module>
                 <module>helloworld-erlang-reference</module>
                 <module>helloworld-erlang-service</module>
-                <!-- the following is excluded from pom-distribution.xml -->
-                <module>helloworld-jms-webapp</module>
+                <module>helloworld-jms-webapp</module> <!-- not released in 1.6.1 -->
                 <module>helloworld-jsonrpc-webapp</module>
                 <module>helloworld-reference-jms</module>
                 <module>helloworld-service-jms</module>
@@ -104,8 +82,7 @@
                 <module>helloworld-ws-service-jms</module>
                 <module>helloworld-ws-service-secure</module>
                 <module>helloworld-ws-reference</module>
-                <!-- the following is excluded from pom-distribution.xml -->
-                <module>helloworld-ws-reference-lean</module>
+                <module>helloworld-ws-reference-lean</module> <!-- not released in 1.6.1 -->
                 <module>helloworld-ws-reference-jms</module>
                 <module>helloworld-ws-reference-secure</module>
                 <module>helloworld-ws-sdo</module>
@@ -116,8 +93,7 @@
                 <module>implementation-crud-extension</module>
                 <module>implementation-notification</module>
                 <module>implementation-pojo-extension</module>
-                <!-- the following is excluded from pom-distribution.xml -->
-                <module>loanapplication</module>
+                <module>loanapplication</module> <!-- not released in 1.6.1 -->
                 <module>osgi-supplychain</module>
                 <module>photo-gallery</module>
                 <module>quote-xquery</module>
@@ -132,10 +108,10 @@
                 <module>store-dojo</module>
                 <module>store-webapp</module>
                 <module>store-secure</module>
-                <module>store-distributed</module>
+                <module>store-distributed</module> <!-- not released in 1.6.1 -->
                 <module>supplychain</module>
                 <module>web-resource</module>
-                <module>zipcode-jaxws</module>
+                <module>zipcode-jaxws</module> <!-- not released in 1.6.1 -->
             </modules>
         </profile>
     </profiles>
diff --git a/tutorials/store/store-test/pom.xml b/tutorials/store/store-test/pom.xml
index f533a0c..74d2539 100644
--- a/tutorials/store/store-test/pom.xml
+++ b/tutorials/store/store-test/pom.xml
@@ -136,14 +136,14 @@
             <version>1.7-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
-
+<!--
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-contribution-jee-impl</artifactId>
             <version>1.7-SNAPSHOT</version>
             <scope>runtime</scope>
         </dependency>
-
+-->
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-implementation-ejb</artifactId>
