diff --git a/samples/domain-management/README b/samples/domain-management/README
index 540cbc3b..eb31bb0 100644
--- a/samples/domain-management/README
+++ b/samples/domain-management/README
@@ -6,11 +6,138 @@
 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 want to run this sample to see what happens, open a command prompt, navigate
+to this sample directory and run any of the sample domain management tasks
+as follows:
+
+Running the Sample
+------------------
+
+1. List deployables in a contribution:
+  ------------------------------------
+
+   - This sample reads the SCA metadata for two sample contributions and prints the names of their deployable composites.
+
+   - Use the following command to run the sample:
+
+    ant runListDeployables
+
+   - OR if you don't have ant,
+    
+    On windows do:
+    java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.ListDeployables 
+
+    On *nix do:         
+    java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.ListDeployables
+
+   - You should see the following output:
+    
+    Deployable: {http://store}store
+
+2. List contribution dependencies:
+  --------------------------------
+
+   - The sample reads the SCA metadata for two sample contributions and prints their dependencies.
+
+   - Use the following command to run the sample:
+
+    ant runListDependencies
+
+   - OR if you don't have ant,
+    
+    On windows do:
+    java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.ListDependencies
+    
+    On *nix do: 
+    java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.ListDependencies
+
+   - You should see the following output:
+
+    Contribution: store
+    dependency: assets
+    dependency: store
+    Contribution: assets
+    dependency: assets
+
+3. Add deployables to a domain composite and wire them:
+  -----------------------------------------------------
+
+   - The sample first reads the SCA metadata for three sample contributions, and resolve the artifacts contained in the contributions,  
+     includes all their deployable composites in a composite model representing an SCA domain, and then
+     uses several composite builder utilities to configure and assemble and wire them together.
+     Finally it prints the resulting domain composite model, showing service bindings
+     configured with the URIs from the nodes hosting them.
+
+   - Use the following command to run the sample:
+
+    ant runWireComponents
+
+   - OR if you don't have ant,
+    
+    On windows do:
+    java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.WireComponents      
+
+    On *nix do: 
+    java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.WireComponents
+
+   - You should see the following output:
+    
+    <?xml version="1.0" encoding="UTF-8"?>
+      <composite name="domain" targetNamespace="http://sample"
+            xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:ns1="http://www.osoa.org/xmlns/sca/1.0">
+        <component name="ShoppingCart" uri="ShoppingCart">
+            <implementation.java class="services.ShoppingCartImpl"/>
+            <service name="Cart">
+              <ns2:binding.atom name="Cart" uri="/ShoppingCart/Cart" xmlns:ns2="http://tuscany.apache.org/xmlns/sca/1.0"/>
+            </service>
+        </component>
+        <component name="ShoppingCartClient" uri="ShoppingCartClient">
+            <implementation.java class="services.ShoppingCartClientImpl"/>
+            <service name="Cart">
+              <ns2:binding.atom name="Cart" uri="/ShoppingCartClient/Cart" xmlns:ns2="http://tuscany.apache.org/xmlns/sca/1.0"/>
+            </service>
+            <reference name="cart">
+              <ns2:binding.atom name="cart#ShoppingCart/Cart"
+                uri="/ShoppingCart/Cart" xmlns:ns2="http://tuscany.apache.org/xmlns/sca/1.0"/>
+            </reference>
+        </component>
+    </composite>
+
+4. List Components:
+  -----------------
+    
+   - This sample reads the SCA metadata for two sample contributions, and displays their dependencies, reads and resolve 
+     the artifacts contained in the contributions, and finally prints the deployables composites and the components
+     they declare as well as their main characteristics (showing that their interfaces and implementations are actually resolved).
+
+   - Use the following command to run the sample:
+
+    ant runListComponents
+
+   - OR if you don't have ant,
+    
+    On windows do:  
+    java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.ListComponents
+
+    On *nix do:     
+    java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.ListComponents
+
+   - You should see the following output:
+
+    Deployable: {http://store}store
+      component: ShoppingCart
+        componentService: Cart
+          binding: class org.apache.tuscany.sca.binding.atom.impl.AtomBindingImpl - /ShoppingCart/Cart
+        implementation: services.ShoppingCartImpl
+          service: Cart
+            interface: services.Cart
+
+
 Sample Overview
 ---------------
 
-This sample demonstrates how to use some of the APIs for processing the contributions.
-These APIs are currently used under the cover in the domain manager.
+This sample demonstrates how to use some of the APIs for processing contributions.
+These APIs are currently used under the covers in the domain manager.
 
 domain-management/
   src/
@@ -50,121 +177,25 @@
     pom.xml
     README
 
+
+Building And Running The Sample Using Ant
+-----------------------------------------
+With the binary distribution the sample can be built and run using Ant as 
+follows:
+
+cd domain-management
+ant compile
+ant runListDeployables
+ant runListDependencies
+ant runWireComponents
+ant runListComponents
+
+
 Building the Sample Using Maven 
--------------------------------------------
+-------------------------------
 
 cd domain-management
 mvn
 
 ** Please note that the mvn command will just build the sample and will install the required jar files into the Maven repository.
 ** In order to run the sample, please see the instructions - "Running the Sample"
-
-Running the Sample
-------------------
-
-** Please make sure that sample is built using above build command(s).
-
-This sample implements following sample domain management tasks:
-
-1. List deployables in a contribution:
-  ------------------------------------
-
-   - This sample reads the SCA metadata for two sample contributions and prints the names of their deployable composites.
-
-   - Use the following command to run the sample:
-	
-	On windows do:
-	java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.ListDeployables	
-
-	On *nix do: 		
-	java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.ListDeployables
-
-   - You should see the following output:
-	
-	Deployable: {http://store}store
-
-2. List contribution dependencies:
-  --------------------------------
-
-   - The sample reads the SCA metadata for two sample contributions and prints their dependencies.
-
-   - Use the following command to run the sample:
-
-	On windows do:
-	java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.ListDependencies
-	
-	On *nix do:	
-	java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.ListDependencies
-
-   - You should see the following output:
-
-	Contribution: store
-	dependency: assets
-	dependency: store
-	Contribution: assets
-	dependency: assets
-
-3. Add deployables to a domain composite and wire them:
-  -----------------------------------------------------
-
-   - The sample first reads the SCA metadata for three sample contributions, and resolve the artifacts contained in the contributions,  
-     includes all their deployable composites in a composite model representing an SCA domain, and then
-     uses several composite builder utilities to configure and assemble and wire them together.
-     Finally it prints the resulting domain composite model, showing service bindings
-     configured with the URIs from the nodes hosting them.
-
-   - Use the following command to run the sample:
-
-	On windows do:
-	java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.WireComponents		
-
-	On *nix do:	
-	java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.WireComponents
-
-   - You should see the following output:
-	
-	<?xml version="1.0" encoding="UTF-8"?>
-	  <composite name="domain" targetNamespace="http://sample"
-			xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:ns1="http://www.osoa.org/xmlns/sca/1.0">
-		<component name="ShoppingCart" uri="ShoppingCart">
-		    <implementation.java class="services.ShoppingCartImpl"/>
-		    <service name="Cart">
-		      <ns2:binding.atom name="Cart" uri="/ShoppingCart/Cart" xmlns:ns2="http://tuscany.apache.org/xmlns/sca/1.0"/>
-		    </service>
-		</component>
-		<component name="ShoppingCartClient" uri="ShoppingCartClient">
-		    <implementation.java class="services.ShoppingCartClientImpl"/>
-		    <service name="Cart">
-		      <ns2:binding.atom name="Cart" uri="/ShoppingCartClient/Cart" xmlns:ns2="http://tuscany.apache.org/xmlns/sca/1.0"/>
-		    </service>
-		    <reference name="cart">
-		      <ns2:binding.atom name="cart#ShoppingCart/Cart"
-		        uri="/ShoppingCart/Cart" xmlns:ns2="http://tuscany.apache.org/xmlns/sca/1.0"/>
-		    </reference>
-		</component>
-	</composite>
-
-4. List Components:
-  -----------------
-	
-   - This sample reads the SCA metadata for two sample contributions, and displays their dependencies, reads and resolve 
-     the artifacts contained in the contributions, and finally prints the deployables composites and the components
-     they declare as well as their main characteristics (showing that their interfaces and implementations are actually resolved).
-
-   - Use the following command to run the sample:
-
-	On windows do:	
-	java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-domain-management.jar manager.ListComponents
-
-	On *nix do:		
-	java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-domain-management.jar manager.ListComponents
-
-   - You should see the following output:
-
-	Deployable: {http://store}store
-	  component: ShoppingCart
-	    componentService: Cart
-	      binding: class org.apache.tuscany.sca.binding.atom.impl.AtomBindingImpl - /ShoppingCart/Cart
-	    implementation: services.ShoppingCartImpl
-	      service: Cart
-	        interface: services.Cart
