diff --git a/distribution/all/src/main/release/launcher/README b/distribution/all/src/main/release/launcher/README
index d651dfd..d92e685 100644
--- a/distribution/all/src/main/release/launcher/README
+++ b/distribution/all/src/main/release/launcher/README
@@ -26,7 +26,7 @@
 development build to their environment so as to start runtimes using their local
 trunk build, for example: 
 
-set PATH=%PATH%;\Tuscany\SVN\trunk\distribution\all\target\apache-tuscany-sca-all-2.0-SNAPSHOT-dir\tuscany-sca-2.0-SNAPSHOT\bin
+set PATH=%PATH%;\Tuscany\SVN\trunk\distribution\all\target\apache-tuscany-sca-all-2.0-Beta1-dir\tuscany-sca-2.0-Beta1\bin
 
 
 
diff --git a/modules/binding-ws/src/test/resources/org/apache/tuscany/sca/binding/ws/xml/test1.wsdl b/modules/binding-ws/src/test/resources/org/apache/tuscany/sca/binding/ws/xml/test1.wsdl
index 8e26f7b..d53104b 100644
--- a/modules/binding-ws/src/test/resources/org/apache/tuscany/sca/binding/ws/xml/test1.wsdl
+++ b/modules/binding-ws/src/test/resources/org/apache/tuscany/sca/binding/ws/xml/test1.wsdl
@@ -38,7 +38,7 @@
 
     <wsdl:service name="HelloWorldService">
         <wsdl:port binding="tns:HelloWorldSoapBinding" name="HelloWorldSoapPort">
-            <wsdlsoap:address location="http://localhost:8085/sample-helloworldws-1.0-SNAPSHOT/services/HelloWorldWebService" />
+            <wsdlsoap:address location="http://localhost:8085/sample-helloworldws/services/HelloWorldWebService" />
         </wsdl:port>
     </wsdl:service>
 
diff --git a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java
index 0a5d99a..2c0583e 100644
--- a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java
+++ b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/GetServiceTestCase.java
@@ -40,8 +40,8 @@
     
     @Test
     public void testTwoNodesSameDomain() throws Exception {
-        serviceNode = new DomainNode("target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar");
-        clientNode = new DomainNode("target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar");
+        serviceNode = new DomainNode("target/test-classes/itest-nodes-helloworld-service-2.0-Beta1.jar");
+        clientNode = new DomainNode("target/test-classes/itest-nodes-helloworld-client-2.0-Beta1.jar");
 
         Helloworld service = serviceNode.getService(Helloworld.class, "HelloworldService");
         assertNotNull(service);
@@ -54,12 +54,12 @@
 
     @Test
     public void testTwoNodesDifferentDomains() throws Exception {
-        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar"});
+        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-Beta1.jar"});
         Helloworld service = serviceNode.getService(Helloworld.class, "HelloworldService");
         assertNotNull(service);
         assertEquals("Hello Petra", service.sayHello("Petra"));
 
-        clientNode = new DomainNode("vm://barDomain", new String[] {"target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar"});
+        clientNode = new DomainNode("vm://barDomain", new String[] {"target/test-classes/itest-nodes-helloworld-client-2.0-Beta1.jar"});
         Helloworld client = clientNode.getService(Helloworld.class, "HelloworldClient");
         assertNotNull(client);
 
diff --git a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/MultipleNodesPerJVMTestCase.java b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/MultipleNodesPerJVMTestCase.java
index 6178765..1f90b39 100644
--- a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/MultipleNodesPerJVMTestCase.java
+++ b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/MultipleNodesPerJVMTestCase.java
@@ -43,8 +43,8 @@
     
     @Test
     public void testTwoNodesSameDomain() throws Exception {
-        serviceNode = new DomainNode("target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar");
-        clientNode = new DomainNode("target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar");
+        serviceNode = new DomainNode("target/test-classes/itest-nodes-helloworld-service-2.0-Beta1.jar");
+        clientNode = new DomainNode("target/test-classes/itest-nodes-helloworld-client-2.0-Beta1.jar");
 
         Helloworld service = SCAClientFactory.newInstance(URI.create("vm://defaultDomain")).getService(Helloworld.class, "HelloworldService");
         assertNotNull(service);
@@ -57,12 +57,12 @@
 
     @Test
     public void testTwoNodesDifferentDomains() throws Exception {
-        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar"});
+        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-Beta1.jar"});
         Helloworld service = SCAClientFactory.newInstance(URI.create("vm://fooDomain")).getService(Helloworld.class, "HelloworldService");
         assertNotNull(service);
         assertEquals("Hello Petra", service.sayHello("Petra"));
 
-        clientNode = new DomainNode("vm://barDomain", new String[]{"target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar"});
+        clientNode = new DomainNode("vm://barDomain", new String[]{"target/test-classes/itest-nodes-helloworld-client-2.0-Beta1.jar"});
         Helloworld client = SCAClientFactory.newInstance(URI.create("vm://barDomain")).getService(Helloworld.class, "HelloworldClient");
         assertNotNull(client);
 
diff --git a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/OneNodeTestCase.java b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/OneNodeTestCase.java
index 10803cd..aef9398 100644
--- a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/OneNodeTestCase.java
+++ b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/OneNodeTestCase.java
@@ -46,8 +46,8 @@
     @Before
     public void setUpBeforeClass() throws Exception {
         domain = new DomainNode();
-        serviceContributionUri = domain.addContribution("target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar");
-        domain.addContribution("target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar");
+        serviceContributionUri = domain.addContribution("target/test-classes/itest-nodes-helloworld-service-2.0-Beta1.jar");
+        domain.addContribution("target/test-classes/itest-nodes-helloworld-client-2.0-Beta1.jar");
     }
 
     @Test
diff --git a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/StopStartNodesTestCase.java b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/StopStartNodesTestCase.java
index 4a29822..febea89 100644
--- a/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/StopStartNodesTestCase.java
+++ b/modules/domain-node/src/test/java/org/apache/tuscany/sca/domain/node/StopStartNodesTestCase.java
@@ -42,8 +42,8 @@
     
     @Test
     public void testTwoNodesSameDomain() throws Exception {
-        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar"});
-        clientNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar"});
+        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-Beta1.jar"});
+        clientNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-client-2.0-Beta1.jar"});
 
         Helloworld service = SCAClientFactory.newInstance(URI.create("vm://fooDomain")).getService(Helloworld.class, "HelloworldService");
         assertNotNull(service);
@@ -64,7 +64,7 @@
             // expected
         }
 
-        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-SNAPSHOT.jar"});
+        serviceNode = new DomainNode("vm://fooDomain", new String[]{"target/test-classes/itest-nodes-helloworld-service-2.0-Beta1.jar"});
         client = SCAClientFactory.newInstance(URI.create("vm://fooDomain")).getService(Helloworld.class, "HelloworldClient");
         assertNotNull(client);
         assertEquals("Hi Hello Petra", client.sayHello("Petra"));
diff --git a/modules/interface-wsdl/src/test/resources/org/apache/tuscany/sca/interfacedef/wsdl/xml/test1.wsdl b/modules/interface-wsdl/src/test/resources/org/apache/tuscany/sca/interfacedef/wsdl/xml/test1.wsdl
index 8e26f7b..d53104b 100644
--- a/modules/interface-wsdl/src/test/resources/org/apache/tuscany/sca/interfacedef/wsdl/xml/test1.wsdl
+++ b/modules/interface-wsdl/src/test/resources/org/apache/tuscany/sca/interfacedef/wsdl/xml/test1.wsdl
@@ -38,7 +38,7 @@
 
     <wsdl:service name="HelloWorldService">
         <wsdl:port binding="tns:HelloWorldSoapBinding" name="HelloWorldSoapPort">
-            <wsdlsoap:address location="http://localhost:8085/sample-helloworldws-1.0-SNAPSHOT/services/HelloWorldWebService" />
+            <wsdlsoap:address location="http://localhost:8085/sample-helloworldws/services/HelloWorldWebService" />
         </wsdl:port>
     </wsdl:service>
 
diff --git a/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml b/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml
index e241f89..a63b114 100644
--- a/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml
+++ b/samples/running-tuscany/maven-osgi-junit/calculator-rest-osgi/pom.xml
@@ -32,27 +32,27 @@
 		<dependency>
 			<groupId>org.apache.tuscany.sca</groupId>
 			<artifactId>tuscany-core-runtime-pom</artifactId>
-			<version>2.0-SNAPSHOT</version>
+			<version>2.0-Beta1-SNAPSHOT</version>
 			<type>pom</type>
 		</dependency>
 		
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-osgi-runtime-pom</artifactId>
-            <version>2.0-SNAPSHOT</version>
+            <version>2.0-Beta1-SNAPSHOT</version>
             <type>pom</type>
         </dependency>		
 		
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-binding-rest-runtime</artifactId>
-            <version>2.0-SNAPSHOT</version>
+            <version>2.0-Beta1-SNAPSHOT</version>
         </dependency>		
 
 		<dependency>
 			<groupId>org.apache.tuscany.sca</groupId>
 			<artifactId>tuscany-base-runtime-pom</artifactId>
-			<version>2.0-SNAPSHOT</version>
+			<version>2.0-Beta1-SNAPSHOT</version>
 			<scope>test</scope>
 			<type>pom</type>
 		</dependency>
@@ -75,7 +75,7 @@
 		<dependency>
 			<groupId>org.apache.tuscany.sca</groupId>
 			<artifactId>tuscany-host-jetty</artifactId>
-			<version>2.0-SNAPSHOT</version>
+			<version>2.0-Beta1-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 
diff --git a/samples/running-tuscany/maven/README b/samples/running-tuscany/maven/README
index ff976c3..61a1e13 100644
--- a/samples/running-tuscany/maven/README
+++ b/samples/running-tuscany/maven/README
@@ -5,7 +5,7 @@
 <plugin>
     <groupId>org.apache.tuscany.maven.plugins</groupId>
     <artifactId>maven-tuscany-plugin</artifactId>
-    <version>2.0-SNAPSHOT</version>
+    <version>2.0-Beta1</version>
 </plugin>
 
 For contributions that have this, for example, binding-sca/contribution-calculator, do the following
diff --git a/testing/itest/base/dependencies/src/test/java/org/apache/tuscany/sca/itest/base/dependencies/ValidateDependenciesTestCase.java b/testing/itest/base/dependencies/src/test/java/org/apache/tuscany/sca/itest/base/dependencies/ValidateDependenciesTestCase.java
index 2cdd77b..8f48205 100644
--- a/testing/itest/base/dependencies/src/test/java/org/apache/tuscany/sca/itest/base/dependencies/ValidateDependenciesTestCase.java
+++ b/testing/itest/base/dependencies/src/test/java/org/apache/tuscany/sca/itest/base/dependencies/ValidateDependenciesTestCase.java
@@ -35,7 +35,7 @@
  * Current required jars are:
  *    asm-3.1.jar
  *    cglib-2.2.jar
- *    tuscany-base-2.0-SNAPSHOT.jar
+ *    tuscany-base-2.0-Beta1.jar
  *    wsdl4j-1.6.2.jar
  *    XmlSchema-1.4.3.jar  
  *
diff --git a/testing/itest/bpel/helloworld-ws/pom.xml b/testing/itest/bpel/helloworld-ws/pom.xml
index f214559..25939ae 100644
--- a/testing/itest/bpel/helloworld-ws/pom.xml
+++ b/testing/itest/bpel/helloworld-ws/pom.xml
@@ -70,7 +70,7 @@
 		<dependency>
 			<groupId>org.apache.tuscany.sca</groupId>
 			<artifactId>tuscany-host-jetty</artifactId>
-			<version>1.6-SNAPSHOT</version>
+			<version>2.0-Beta1-SNAPSHOT</version>
 			<scope>runtime</scope>
 		</dependency>
 
diff --git a/testing/itest/nodes/two-nodes-two-vms-test/src/test/java/itest/Client.java b/testing/itest/nodes/two-nodes-two-vms-test/src/test/java/itest/Client.java
index eef3362..0fa0fbb 100644
--- a/testing/itest/nodes/two-nodes-two-vms-test/src/test/java/itest/Client.java
+++ b/testing/itest/nodes/two-nodes-two-vms-test/src/test/java/itest/Client.java
@@ -47,7 +47,7 @@
             throw ex;
         }
         
-//        clientNode = new DomainNode("tribes:default", new String []{"../helloworld-client/target/itest-nodes-helloworld-client-2.0-SNAPSHOT.jar"});
+//        clientNode = new DomainNode("tribes:default", new String []{"../helloworld-client/target/itest-nodes-helloworld-client-2.0-Beta1.jar"});
     }
 
     @Test
diff --git a/testing/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java b/testing/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
index 7923492..6e1db04 100644
--- a/testing/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
+++ b/testing/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
@@ -41,30 +41,30 @@
  * jsr181-api-1.0-MR1.jar
  * jsr250-api-1.0.jar
  * junit-4.8.1.jar
- * tuscany-assembly-2.0-SNAPSHOT.jar
- * tuscany-assembly-xml-2.0-SNAPSHOT.jar
- * tuscany-assembly-xsd-2.0-SNAPSHOT.jar
- * tuscany-binding-http-2.0-SNAPSHOT.jar
- * tuscany-binding-jms-2.0-SNAPSHOT.jar
- * tuscany-binding-jsonp-2.0-SNAPSHOT.jar
- * tuscany-binding-rmi-2.0-SNAPSHOT.jar
- * tuscany-binding-ws-2.0-SNAPSHOT.jar
- * tuscany-builder-2.0-SNAPSHOT.jar
- * tuscany-common-java-2.0-SNAPSHOT.jar
- * tuscany-common-xml-2.0-SNAPSHOT.jar
- * tuscany-contribution-2.0-SNAPSHOT.jar
- * tuscany-core-spi-2.0-SNAPSHOT.jar
- * tuscany-databinding-2.0-SNAPSHOT.jar
- * tuscany-databinding-jaxb-2.0-SNAPSHOT.jar
- * tuscany-deployment-2.0-SNAPSHOT.jar
- * tuscany-extensibility-2.0-SNAPSHOT.jar
- * tuscany-implementation-java-2.0-SNAPSHOT.jar
- * tuscany-interface-java-2.0-SNAPSHOT.jar
- * tuscany-interface-java-jaxws-2.0-SNAPSHOT.jar
- * tuscany-interface-wsdl-2.0-SNAPSHOT.jar
- * tuscany-monitor-2.0-SNAPSHOT.jar
- * tuscany-sca-api-2.0-SNAPSHOT.jar
- * tuscany-xsd-2.0-SNAPSHOT.jar
+ * tuscany-assembly-2.0-Beta1.jar
+ * tuscany-assembly-xml-2.0-Beta1.jar
+ * tuscany-assembly-xsd-2.0-Beta1.jar
+ * tuscany-binding-http-2.0-Beta1.jar
+ * tuscany-binding-jms-2.0-Beta1.jar
+ * tuscany-binding-jsonp-2.0-Beta1.jar
+ * tuscany-binding-rmi-2.0-Beta1.jar
+ * tuscany-binding-ws-2.0-Beta1.jar
+ * tuscany-builder-2.0-Beta1.jar
+ * tuscany-common-java-2.0-Beta1.jar
+ * tuscany-common-xml-2.0-Beta1.jar
+ * tuscany-contribution-2.0-Beta1.jar
+ * tuscany-core-spi-2.0-Beta1.jar
+ * tuscany-databinding-2.0-Beta1.jar
+ * tuscany-databinding-jaxb-2.0-Beta1.jar
+ * tuscany-deployment-2.0-Beta1.jar
+ * tuscany-extensibility-2.0-Beta1.jar
+ * tuscany-implementation-java-2.0-Beta1.jar
+ * tuscany-interface-java-2.0-Beta1.jar
+ * tuscany-interface-java-jaxws-2.0-Beta1.jar
+ * tuscany-interface-wsdl-2.0-Beta1.jar
+ * tuscany-monitor-2.0-Beta1.jar
+ * tuscany-sca-api-2.0-Beta1.jar
+ * tuscany-xsd-2.0-Beta1.jar
  * wsdl4j-1.6.2.jar
  * wstx-asl-3.2.4.jar
  * XmlSchema-1.4.3.jar
