diff --git a/conf/coordinator-axis2.xml b/conf/coordinator-axis2.xml
index 7f0f055..92d05d0 100644
--- a/conf/coordinator-axis2.xml
+++ b/conf/coordinator-axis2.xml
@@ -218,86 +218,101 @@
     <!-- ================================================= -->
     <!-- Phases  -->
     <!-- ================================================= -->
-    <phaseOrder type="InFlow">
-        <!--  System pre defined phases       -->
-        <phase name="Transport">
-            <handler name="RequestURIBasedDispatcher"
-                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
-                <order phase="Transport"/>
-            </handler>
-            <handler name="SOAPActionBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
-                <order phase="Transport"/>
-            </handler>
-        </phase>
-        <phase name="Security"/>
-        <phase name="PreDispatch"/>
-        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
-            <handler name="AddressingBasedDispatcher"
-                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="SOAPMessageBodyBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-            <handler name="InstanceDispatcher"
-                     class="org.apache.axis2.engine.InstanceDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-        </phase>
-        <!--  System pre defined phases       -->
-        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
-        <phase name="OperationInPhase"/>
-	<phase name="soapmonitorPhase"/>
+    <phaseOrder type="InFlow">
+        <!--  System predefined phases       -->
+        <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Addressing">
+             <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                 <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--  System predefined phases       -->
+        <!--   After Postdispatch phase module author or service author can add any phase he want      -->
+        <phase name="OperationInPhase">
+            <handler name="MustUnderstandChecker"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker">
+                <order phase="OperationInPhase"/>
+            </handler>
+        </phase>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="Addressing">
+             <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                 <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
-    <phaseOrder type="OutFlow">
-        <!--      user can add his own phases to this area  -->
-	<phase name="soapmonitorPhase"/>
-        <phase name="OperationOutPhase"/>
-        <!--system predefined phase-->
-        <!--these phase will run irrespective of the service-->
-        <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
-        <phase name="Security"/>
-    </phaseOrder>
-    <phaseOrder type="InFaultFlow">
-        <phase name="PreDispatch"/>
-        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
-            <handler name="RequestURIBasedDispatcher"
-                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="SOAPActionBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="AddressingBasedDispatcher"
-                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="SOAPMessageBodyBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-            <handler name="InstanceDispatcher"
-                     class="org.apache.axis2.engine.InstanceDispatcher">
-                <order phase="PostDispatch"/>
-            </handler>
-        </phase>
-        <!--      user can add his own phases to this area  -->
-        <phase name="OperationInFaultPhase"/>
-	<phase name="soapmonitorPhase"/>
-    </phaseOrder>
-    <phaseOrder type="OutFaultFlow">
-        <!--      user can add his own phases to this area  -->
-	<phase name="soapmonitorPhase"/>
-        <phase name="OperationOutFaultPhase"/>
-        <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
-    </phaseOrder>
-</axisconfig>
\ No newline at end of file
+</axisconfig>
diff --git a/conf/initiator-axis2.xml b/conf/initiator-axis2.xml
index cfe121a..eaaedaa 100644
--- a/conf/initiator-axis2.xml
+++ b/conf/initiator-axis2.xml
@@ -220,88 +220,101 @@
 	<!-- ================================================= -->
 	<!-- Phases  -->
 	<!-- ================================================= -->
-	<phaseOrder type="InFlow">
-		<!--  System pre defined phases       -->
-		<phase name="Transport">
-			<handler name="RequestURIBasedDispatcher"
-				class="org.apache.axis2.engine.RequestURIBasedDispatcher">
-				<order phase="Transport" />
-			</handler>
-			<handler name="SOAPActionBasedDispatcher"
-				class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
-				<order phase="Transport" />
-			</handler>
-		</phase>
-		<phase name="Security" />
-		<phase name="PreDispatch" />
-		<phase name="Dispatch"
-			class="org.apache.axis2.engine.DispatchPhase">
-			<handler name="AddressingBasedDispatcher"
-				class="org.apache.axis2.engine.AddressingBasedDispatcher">
-				<order phase="Dispatch" />
-			</handler>
-
-			<handler name="SOAPMessageBodyBasedDispatcher"
-				class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
-				<order phase="Dispatch" />
-			</handler>
-			<handler name="InstanceDispatcher"
-				class="org.apache.axis2.engine.InstanceDispatcher">
-				<order phase="Dispatch" />
-			</handler>
-		</phase>
-		<!--  System pre defined phases       -->
-		<!--   After Postdispatch phase module author or or service author can add any phase he want      -->
-		<phase name="OperationInPhase" />
-		<phase name="soapmonitorPhase" />
-	</phaseOrder>
-	<phaseOrder type="OutFlow">
-		<!--      user can add his own phases to this area  -->
-		<phase name="soapmonitorPhase" />
-		<phase name="OperationOutPhase" />
-		<!--system predefined phase-->
-		<!--these phase will run irrespective of the service-->
-		<phase name="PolicyDetermination" />
-		<phase name="MessageOut" />
-		<phase name="Security" />
-	</phaseOrder>
-	<phaseOrder type="InFaultFlow">
-		<phase name="PreDispatch" />
-		<phase name="Dispatch"
-			class="org.apache.axis2.engine.DispatchPhase">
-			<handler name="RequestURIBasedDispatcher"
-				class="org.apache.axis2.engine.RequestURIBasedDispatcher">
-				<order phase="Dispatch" />
-			</handler>
-
-			<handler name="SOAPActionBasedDispatcher"
-				class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
-				<order phase="Dispatch" />
-			</handler>
-
-			<handler name="AddressingBasedDispatcher"
-				class="org.apache.axis2.engine.AddressingBasedDispatcher">
-				<order phase="Dispatch" />
-			</handler>
-
-			<handler name="SOAPMessageBodyBasedDispatcher"
-				class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
-				<order phase="Dispatch" />
-			</handler>
-			<handler name="InstanceDispatcher"
-				class="org.apache.axis2.engine.InstanceDispatcher">
-				<order phase="PostDispatch" />
-			</handler>
-		</phase>
-		<!--      user can add his own phases to this area  -->
-		<phase name="OperationInFaultPhase" />
-		<phase name="soapmonitorPhase" />
-	</phaseOrder>
-	<phaseOrder type="OutFaultFlow">
-		<!--      user can add his own phases to this area  -->
-		<phase name="soapmonitorPhase" />
-		<phase name="OperationOutFaultPhase" />
-		<phase name="PolicyDetermination" />
-		<phase name="MessageOut" />
-	</phaseOrder>
-</axisconfig>
\ No newline at end of file
+    <phaseOrder type="InFlow">
+        <!--  System predefined phases       -->
+        <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Addressing">
+             <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                 <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--  System predefined phases       -->
+        <!--   After Postdispatch phase module author or service author can add any phase he want      -->
+        <phase name="OperationInPhase">
+            <handler name="MustUnderstandChecker"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker">
+                <order phase="OperationInPhase"/>
+            </handler>
+        </phase>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="Addressing">
+             <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                 <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+</axisconfig>
diff --git a/conf/participant-axis2.xml b/conf/participant-axis2.xml
index 71594a2..a394210 100644
--- a/conf/participant-axis2.xml
+++ b/conf/participant-axis2.xml
@@ -218,87 +218,102 @@
     <!-- ================================================= -->
     <!-- Phases  -->
     <!-- ================================================= -->
-    <phaseOrder type="InFlow">
-        <!--  System pre defined phases       -->
-        <phase name="Transport">
-            <handler name="RequestURIBasedDispatcher"
-                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
-                <order phase="Transport"/>
-            </handler>
-            <handler name="SOAPActionBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
-                <order phase="Transport"/>
-            </handler>
-        </phase>
-        <phase name="Security"/>
-        <phase name="PreDispatch"/>
-        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
-            <handler name="AddressingBasedDispatcher"
-                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="SOAPMessageBodyBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-            <handler name="InstanceDispatcher"
-                     class="org.apache.axis2.engine.InstanceDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-        </phase>
-        <!--  System pre defined phases       -->
-        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
-        <phase name="OperationInPhase"/>
-	<phase name="soapmonitorPhase"/>
-    </phaseOrder>
-    <phaseOrder type="OutFlow">
-        <!--      user can add his own phases to this area  -->
-	<phase name="soapmonitorPhase"/>
-        <phase name="OperationOutPhase"/>
-        <!--system predefined phase-->
-        <!--these phase will run irrespective of the service-->
-        <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
-        <phase name="Security"/>
-    </phaseOrder>
-    <phaseOrder type="InFaultFlow">
-        <phase name="PreDispatch"/>
-        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
-            <handler name="RequestURIBasedDispatcher"
-                     class="org.apache.axis2.engine.RequestURIBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="SOAPActionBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="AddressingBasedDispatcher"
-                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-
-            <handler name="SOAPMessageBodyBasedDispatcher"
-                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
-                <order phase="Dispatch"/>
-            </handler>
-            <handler name="InstanceDispatcher"
-                     class="org.apache.axis2.engine.InstanceDispatcher">
-                <order phase="PostDispatch"/>
-            </handler>
-        </phase>
-        <!--      user can add his own phases to this area  -->
-        <phase name="OperationInFaultPhase"/>
-	<phase name="soapmonitorPhase"/>
-    </phaseOrder>
-    <phaseOrder type="OutFaultFlow">
-        <!--      user can add his own phases to this area  -->
-	<phase name="soapmonitorPhase"/>
-        <phase name="OperationOutFaultPhase"/>
-        <phase name="PolicyDetermination"/>
-        <phase name="MessageOut"/>
+    <phaseOrder type="InFlow">
+        <!--  System predefined phases       -->
+        <phase name="Transport">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+        </phase>
+        <phase name="Addressing">
+             <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                 <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--  System predefined phases       -->
+        <!--   After Postdispatch phase module author or service author can add any phase he want      -->
+        <phase name="OperationInPhase">
+            <handler name="MustUnderstandChecker"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker">
+                <order phase="OperationInPhase"/>
+            </handler>
+        </phase>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutPhase"/>
+        <!--system predefined phase-->
+        <!--these phase will run irrespective of the service-->
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
+    </phaseOrder>
+    <phaseOrder type="InFaultFlow">
+        <phase name="Addressing">
+             <handler name="AddressingBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
+                 <order phase="Addressing"/>
+            </handler>
+        </phase>
+        <phase name="Security"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+            <handler name="RequestURIBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
+            <handler name="SOAPActionBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
+            <handler name="RequestURIOperationDispatcher"
+                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
+            <handler name="SOAPMessageBodyBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
+            <handler name="HTTPLocationBasedDispatcher"
+                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
+            <handler name="GenericProviderDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
+            <handler name="MustUnderstandValidationDispatcher"
+                     class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
+        </phase>
+        <phase name="RMPhase"/>
+        <!--      user can add his own phases to this area  -->
+        <phase name="OperationInFaultPhase"/>
+        <phase name="soapmonitorPhase"/>
+    </phaseOrder>
+    <phaseOrder type="OutFaultFlow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="soapmonitorPhase"/>
+        <phase name="OperationOutFaultPhase"/>
+        <phase name="RMPhase"/>
+        <phase name="PolicyDetermination"/>
+        <phase name="MessageOut"/>
+        <phase name="Security"/>
     </phaseOrder>
 </axisconfig>
 
diff --git a/project.properties b/project.properties
index 32c849e..1e62ac3 100644
--- a/project.properties
+++ b/project.properties
@@ -24,7 +24,7 @@
 # -------------------------------------------------------------------
 #                Dependency Repositories
 # -------------------------------------------------------------------
-maven.repo.remote=\
+maven.repo.remote=\
 http://www.ibiblio.org/maven,\
 https://maven-repository.dev.java.net/nonav/repository/,\
 http://people.apache.org/repo/m1-ibiblio-rsync-repository/,\
@@ -49,28 +49,28 @@
 # -------------------------------------------------------------------
 #                Versions of dependencies
 # -------------------------------------------------------------------
-axis2.version=1.2
+axis2.version=1.4
 activation.version=1.1
 annogen.version=0.1.0
-axiom.version=1.2.4
+axiom.version=1.2.7
 backport_util_concurrent.version=2.2
 commons.codec.version=1.3
-commons.httpclient.version=3.0.1
+commons.httpclient.version=3.0.1
 commons.fileupload.version=1.1.1
 commons.logging.version=1.1
-jakarta.httpcore.version=4.0-alpha4
+jakarta.httpcore.version=4.0-beta1
 javamail.version=1.4
 jaxen.version=1.1-beta-10
 junit.version=3.8.2
-neethi.version=2.0
+neethi.version=2.0.4
 stax.api.version=1.0.1
 stax.impl.artifactid=wstx-asl
 stax.impl.groupid=woodstox
 stax.impl.version=3.2.1
 stax_utils.version=20060915 
-woden.version=1.0.0M6
-wsdl4j.version=1.6.1
-XmlSchema.version=1.2
+woden.version=1.0M8
+wsdl4j.version=1.6.2
+XmlSchema.version=1.4.2
 xerces.version=2.8.1
 xml_apis.version=1.3.03
 log4j.version=1.2.13
diff --git a/project.xml b/project.xml
index 1039bd0..8211dd3 100644
--- a/project.xml
+++ b/project.xml
@@ -240,21 +240,20 @@
 				<module>true</module>
 			</properties>
 		</dependency>
-	    <dependency>
-          <groupId>commons-fileupload</groupId>
-          <artifactId>commons-fileupload</artifactId>
-          <version>${commons.fileupload.version}</version>
-          <properties>
-              <module>true</module>
-          </properties>
-       </dependency>   
+               
+	        <dependency>
+                        <groupId>commons-fileupload</groupId>
+                        <artifactId>commons-fileupload</artifactId>
+                        <version>${commons.fileupload.version}</version>
+                        <properties>
+                              <module>true</module>
+                        </properties>
+                </dependency>   
 		<dependency>
 			<groupId>httpcomponents-httpcore</groupId>
-			<artifactId>jakarta-httpcore</artifactId>
+			<artifactId>httpcore</artifactId>
 			<version>${jakarta.httpcore.version}</version>
-			<properties>
-				<module>true</module>
-			</properties>
+			
 		</dependency>
 		<dependency>
 			<groupId>commons-codec</groupId>
@@ -288,6 +287,14 @@
 				<module>true</module>
 			</properties>
 		</dependency>
+	    <dependency>
+          <groupId>woden</groupId>
+          <artifactId>woden-api</artifactId>
+          <version>${woden.version}</version>
+          <properties>
+              <module>true</module>
+          </properties>
+       </dependency>
 	</dependencies>
 
 	<!-- ================================= -->
diff --git a/src/org/apache/kandula/context/CoordinationContext.java b/src/org/apache/kandula/context/CoordinationContext.java
index aaf1ae8..82d3f78 100644
--- a/src/org/apache/kandula/context/CoordinationContext.java
+++ b/src/org/apache/kandula/context/CoordinationContext.java
@@ -20,7 +20,7 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.kandula.context.impl.ADBCoordinationContext;
 import org.apache.kandula.context.impl.SimpleCoordinationContext;
-import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type3;
+import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type0;
 
 public interface CoordinationContext {
 	public static final class Factory {
@@ -34,7 +34,7 @@
 					epr);
 		}
 		
-		public static CoordinationContext newContext(CoordinationContext_type3 context_type3) {
+		public static CoordinationContext newContext(CoordinationContext_type0 context_type3) {
 			return new ADBCoordinationContext(context_type3);
 		}
 
@@ -60,5 +60,5 @@
 
 	public abstract void setRegistrationService(EndpointReference value);
 
-	public abstract OMElement toOM();
+	public abstract OMElement toOM() throws Exception;
 }
diff --git a/src/org/apache/kandula/context/impl/ADBCoordinationContext.java b/src/org/apache/kandula/context/impl/ADBCoordinationContext.java
index c24aa16..18a9485 100644
--- a/src/org/apache/kandula/context/impl/ADBCoordinationContext.java
+++ b/src/org/apache/kandula/context/impl/ADBCoordinationContext.java
@@ -26,12 +26,12 @@
 import org.apache.kandula.Constants;
 import org.apache.kandula.context.CoordinationContext;
 import org.apache.kandula.utility.EndpointReferenceFactory;
-import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type3;
+import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type0;
 
 public class ADBCoordinationContext implements CoordinationContext {
 
-	CoordinationContext_type3 context_type3;
-	public ADBCoordinationContext(CoordinationContext_type3 context_type3) {
+	CoordinationContext_type0 context_type3;
+	public ADBCoordinationContext(CoordinationContext_type0 context_type3) {
 		super();
 		this.context_type3 = context_type3;
 	}
@@ -69,7 +69,7 @@
 		// TODO Auto-generated method stub
 		
 	}
-	public OMElement toOM() {
+	public OMElement toOM() throws Exception {
 		return context_type3.getOMElement(new QName(Constants.WS_COOR,"CoordinationContext"),
                 org.apache.axiom.om.OMAbstractFactory.getOMFactory());
 	}
diff --git a/src/org/apache/kandula/initiator/TransactionManager.java b/src/org/apache/kandula/initiator/TransactionManager.java
index 5bb7dfb..617ce56 100644
--- a/src/org/apache/kandula/initiator/TransactionManager.java
+++ b/src/org/apache/kandula/initiator/TransactionManager.java
@@ -35,7 +35,7 @@
 import org.apache.kandula.wsat.completion.CompletionInitiatorServiceListener;
 import org.apache.kandula.wscoor.ActivationServiceStub;
 import org.apache.kandula.wscoor.RegistrationServiceStub;
-import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type3;
+import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type0;
 import org.oasis_open.docs.ws_tx.wscoor._2006._06.CreateCoordinationContext;
 import org.oasis_open.docs.ws_tx.wscoor._2006._06.CreateCoordinationContextResponse;
 import org.oasis_open.docs.ws_tx.wscoor._2006._06.CreateCoordinationContextResponseType;
@@ -179,7 +179,7 @@
 				.CreateCoordinationContextOperation(context);
 		CreateCoordinationContextResponseType createCoordinationContextResponse = response
 				.getCreateCoordinationContextResponse();
-		CoordinationContext_type3 coordinationContextType = createCoordinationContextResponse.getCoordinationContext();
+		CoordinationContext_type0 coordinationContextType = createCoordinationContextResponse.getCoordinationContext();
 		coordinationContextType.setExtraAttributes(null);
 		CoordinationContext coordinationContext = new ADBCoordinationContext(
 				coordinationContextType);
diff --git a/src/org/apache/kandula/initiator/TransactionOutHandler.java b/src/org/apache/kandula/initiator/TransactionOutHandler.java
index dd1837b..66a8167 100644
--- a/src/org/apache/kandula/initiator/TransactionOutHandler.java
+++ b/src/org/apache/kandula/initiator/TransactionOutHandler.java
@@ -33,7 +33,7 @@
 import org.apache.kandula.context.AbstractContext;
 import org.apache.kandula.context.CoordinationContext;
 import org.apache.kandula.faults.AbstractKandulaException;
-import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type3;
+import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type0;
 import org.xmlsoap.schemas.ws._2004._08.addressing.ReferenceParametersType;
 
 public class TransactionOutHandler extends AbstractHandler {
@@ -41,24 +41,28 @@
 	/**
 	 * Field log
 	 */
-	private static final Log log = LogFactory.getLog(TransactionOutHandler.class);
+	private static final Log log = LogFactory
+			.getLog(TransactionOutHandler.class);
 
 	private static final long serialVersionUID = 4133392345837905499L;
 
-	public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
+	public InvocationResponse invoke(MessageContext msgContext)
+			throws AxisFault {
 
 		String wsaAction = msgContext.getWSAAction();
 		if (!(Constants.WS_COOR_CREATE_COORDINATIONCONTEXT.equals(wsaAction))
 				&& !(Constants.WS_COOR_REGISTER.equals(wsaAction))
-				&& !(Constants.WS_AT_COMMIT.equals(wsaAction)) && !(Constants.WS_AT_ROLLBACK.equals(wsaAction))) {
+				&& !(Constants.WS_AT_COMMIT.equals(wsaAction))
+				&& !(Constants.WS_AT_ROLLBACK.equals(wsaAction))) {
 			Object context = null;
 			try {
 				context = TransactionManager.getTransaction();
 			} catch (AbstractKandulaException e) {
-				throw  AxisFault.makeFault(e);
+				throw AxisFault.makeFault(e);
 			}
 			if (context == null) {
-				context = msgContext.getProperty(Constants.Configuration.TRANSACTION_CONTEXT);
+				context = msgContext
+						.getProperty(Constants.Configuration.TRANSACTION_CONTEXT);
 			}
 			// We let the message to pass through if no transaction is found in
 			// the thread or in msgContext
@@ -67,39 +71,54 @@
 						.getProperty(Constants.Configuration.PARTICIPANT_IDENTIFIER);
 				AbstractContext txContext = (AbstractContext) context;
 				SOAPHeader soapHeader = msgContext.getEnvelope().getHeader();
-				CoordinationContext coorContext = txContext.getCoordinationContext();
-	
-				//ws-ba users can set a identifier for the participants
-				if (registrationID != null) {
-					CoordinationContext_type3 context_type32 = null;
-					ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-					try {
+				CoordinationContext coorContext = txContext
+						.getCoordinationContext();
+
+				try {
+					// ws-ba users can set a identifier for the participants
+					if (registrationID != null) {
+						CoordinationContext_type0 context_type32 = null;
+						ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+
 						coorContext.toOM().serialize(byteArrayOutputStream);
-						context_type32 = CoordinationContext_type3.Factory.parse(StAXUtils
-								.createXMLStreamReader(new ByteArrayInputStream(
-										byteArrayOutputStream.toByteArray())));
+						context_type32 = CoordinationContext_type0.Factory
+								.parse(StAXUtils
+										.createXMLStreamReader(new ByteArrayInputStream(
+												byteArrayOutputStream
+														.toByteArray())));
 						context_type32.setExtraAttributes(null);
-					} catch (Exception e) {
-						throw AxisFault.makeFault(e);
+
+						ReferenceParametersType referenceParametersType = context_type32
+								.getRegistrationService()
+								.getReferenceParameters();
+						OMElement omElement = soapHeader.getOMFactory()
+								.createOMElement(
+										Constants.PARTICIPANT_ID_PARAMETER,
+										null);
+						omElement.setText((String) registrationID);
+						referenceParametersType.addExtraElement(omElement);
+						soapHeader.addChild(context_type32.getOMElement(
+								new QName(Constants.WS_COOR,
+										"CoordinationContext"), soapHeader
+										.getOMFactory()));
+
+						log.info("Transaction Context found for message ID"
+								+ msgContext.getMessageID()
+								+ ". Participant ID :" + registrationID);
+
+					} else {
+						soapHeader.addChild(coorContext.toOM());
+						log.info("Transaction Context found for message ID"
+								+ msgContext.getMessageID());
 					}
-					ReferenceParametersType referenceParametersType = context_type32
-							.getRegistrationService().getReferenceParameters();
-					OMElement omElement = soapHeader.getOMFactory().createOMElement(
-							Constants.PARTICIPANT_ID_PARAMETER, null);
-					omElement.setText((String) registrationID);
-					referenceParametersType.addExtraElement(omElement);
-					soapHeader.addChild(context_type32.getOMElement(new QName(Constants.WS_COOR,
-							"CoordinationContext"), soapHeader.getOMFactory()));
-					log.info("Transaction Context found for message ID" + msgContext.getMessageID()
-							+ ". Participant ID :" + registrationID);
-				} else {
-					soapHeader.addChild(coorContext.toOM());
-					log.info("Transaction Context found for message ID" + msgContext.getMessageID());
+				} catch (Exception e) {
+					throw AxisFault.makeFault(e);
 				}
 
 			} else {
-				log.debug("Transaction Handler Engaged. "
-						+ "But no transaction information was found in the thread.");
+				log
+						.debug("Transaction Handler Engaged. "
+								+ "But no transaction information was found in the thread.");
 			}
 		}
 		return InvocationResponse.CONTINUE;
diff --git a/src/org/apache/kandula/wsat/AbstractATNotifierStub.java b/src/org/apache/kandula/wsat/AbstractATNotifierStub.java
index 40f5d9d..c9bd7b5 100644
--- a/src/org/apache/kandula/wsat/AbstractATNotifierStub.java
+++ b/src/org/apache/kandula/wsat/AbstractATNotifierStub.java
@@ -17,6 +17,7 @@
 package org.apache.kandula.wsat;
 
 import java.io.IOException;
+import java.util.Random;
 
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
@@ -27,6 +28,7 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
@@ -49,18 +51,25 @@
 	protected ServiceContext serviceContext;
 
 	protected EndpointReference toEPR;
+	
+	protected ServiceClient  _serviceClient;
 
+	//TODO: Review this with the latest axis2 changes
 	public AbstractATNotifierStub(ConfigurationContext configurationContext)
 			throws AbstractKandulaException {
-		this.service = new AxisService("annonService" + this.hashCode());
+
+		this.service = new AxisService("annonService" + new Random().nextInt());
 		try {
-			configurationContext.getAxisConfiguration().addService(service);
+		//	configurationContext.getAxisConfiguration().addService(service);
+		
+	    _serviceClient = new org.apache.axis2.client.ServiceClient(configurationContext,service);
 		} catch (AxisFault e1) {
 			throw new KandulaGeneralException(e1);
 		}
-		ServiceGroupContext sgc = new ServiceGroupContext(configurationContext,
-				(AxisServiceGroup) this.service.getParent());
-		this.serviceContext = new ServiceContext(service, sgc);
+//	        
+//		ServiceGroupContext sgc = new ServiceGroupContext(configurationContext,
+//				(AxisServiceGroup) this.service.getParent());
+//		this.serviceContext = new ServiceContext(service, sgc);
 	}
 
 	/**
@@ -83,9 +92,8 @@
 		try {
 			Options options = new Options();
 			messageContext = new MessageContext();
-			final OperationClient client = operations[opIndex].createClient(
-					serviceContext, options);
-
+			final OperationClient client = _serviceClient.createClient(operations[opIndex].getName());
+				
 			SOAPFactory factory = OMAbstractFactory.getSOAP12Factory();
 			SOAPEnvelope env = factory.getDefaultEnvelope();
 
@@ -107,6 +115,7 @@
 			// System.out.println(operations[opIndex]);
 			client.addMessageContext(messageContext);
 			/*
+			 * TODO: Fix the following
 			 * hacking till we get fire and forget corretly in Axis2
 			 */
 			Thread thread = new Thread(new Runnable() {
diff --git a/src/org/apache/kandula/wscoor/ActivationServiceSkeleton.java b/src/org/apache/kandula/wscoor/ActivationServiceSkeleton.java
index e9e4846..26766ed 100644
--- a/src/org/apache/kandula/wscoor/ActivationServiceSkeleton.java
+++ b/src/org/apache/kandula/wscoor/ActivationServiceSkeleton.java
@@ -6,30 +6,22 @@
  */
 package org.apache.kandula.wscoor;
 
-import java.util.Map;
-
-import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.databinding.types.URI;
 import org.apache.axis2.databinding.types.UnsignedInt;
 import org.apache.axis2.databinding.types.URI.MalformedURIException;
-import org.apache.kandula.Constants;
 import org.apache.kandula.context.AbstractContext;
 import org.apache.kandula.context.CoordinationContext;
 import org.apache.kandula.coordinator.Coordinator;
 import org.apache.kandula.faults.AbstractKandulaException;
-import org.apache.kandula.storage.StorageUtils;
 import org.apache.kandula.utility.EndpointReferenceFactory;
-import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type3;
+import org.oasis_open.docs.ws_tx.wscoor._2006._06.CoordinationContext_type0;
 import org.oasis_open.docs.ws_tx.wscoor._2006._06.CreateCoordinationContextResponse;
 import org.oasis_open.docs.ws_tx.wscoor._2006._06.CreateCoordinationContextResponseType;
 import org.oasis_open.docs.ws_tx.wscoor._2006._06.CreateCoordinationContextType;
 import org.oasis_open.docs.ws_tx.wscoor._2006._06.Expires_type0;
-import org.oasis_open.docs.ws_tx.wscoor._2006._06.Identifier_type1;
-import org.xmlsoap.schemas.ws._2004._08.addressing.AttributedURI;
-import org.xmlsoap.schemas.ws._2004._08.addressing.EndpointReferenceType;
-import org.xmlsoap.schemas.ws._2004._08.addressing.ReferenceParametersType;
+import org.oasis_open.docs.ws_tx.wscoor._2006._06.Identifier_type0;
 
 /**
  * ActivationServiceSkeleton java skeleton for the axisService
@@ -74,7 +66,7 @@
 			CoordinationContext coordinationContext = context.getCoordinationContext();
 
 			// filling the data bounded coordination context
-			CoordinationContext_type3 coordinationContext_type3 = new CoordinationContext_type3();
+			CoordinationContext_type0 coordinationContext_type3 = new CoordinationContext_type0();
 			coordinationContext_type3.setCoordinationType(new URI(coordinationContext
 					.getCoordinationType()));
 			Expires_type0 expires_type0 = new Expires_type0();
@@ -84,7 +76,7 @@
 			coordinationContext_type3.setRegistrationService(EndpointReferenceFactory
 					.getEPRTypeFromEPR(coordinationContext.getRegistrationService()));
 
-			Identifier_type1 identifier_type1 = new Identifier_type1();
+			Identifier_type0 identifier_type1 = new Identifier_type0();
 			identifier_type1.setAnyURI(new URI("http", "thilina"));
 			coordinationContext_type3.setIdentifier(identifier_type1);
 
diff --git a/test-resources/KandulaDemoService/KandulaDemoService.wsdl b/test-resources/KandulaDemoService/KandulaDemoService.wsdl
index 61ed9d3..02dcf95 100644
--- a/test-resources/KandulaDemoService/KandulaDemoService.wsdl
+++ b/test-resources/KandulaDemoService/KandulaDemoService.wsdl
@@ -1,6 +1,6 @@
 <wsdl:definitions xmlns:axis2="http://integration.kandula.apache.org"
 	xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
-	xmlns:ns0="http://integration.kandula.apache.org/xsd"
+	xmlns:ns0="http://integration.kandula.apache.org"
 	xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
 	xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
 	xmlns:ns1="http://org.apache.axis2/xsd"
@@ -10,9 +10,9 @@
 	targetNamespace="http://integration.kandula.apache.org">
 	<wsdl:documentation>Sample service for Testing</wsdl:documentation>
 	<wsdl:types>
-		<xs:schema xmlns:ns="http://integration.kandula.apache.org/xsd"
+		<xs:schema xmlns:ns="http://integration.kandula.apache.org"
 			attributeFormDefault="qualified" elementFormDefault="qualified"
-			targetNamespace="http://integration.kandula.apache.org/xsd">
+			targetNamespace="http://integration.kandula.apache.org">
 			<xs:element name="creditOperation">
 				<xs:complexType>
 					<xs:sequence>
@@ -137,4 +137,4 @@
 				location="http://localhost:8081/axis2/services/KandulaDemoService" />
 		</wsdl:port>
 	</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
diff --git a/test/interop/TestServiceStub.java b/test/interop/TestServiceStub.java
index 63f3539..041d01f 100644
--- a/test/interop/TestServiceStub.java
+++ b/test/interop/TestServiceStub.java
@@ -28,14 +28,13 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
-import org.apache.axis2.context.ServiceGroupContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.AxisServiceGroup;
 import org.apache.axis2.description.OutInAxisOperation;
 
 /**
@@ -52,6 +51,8 @@
 	private ServiceContext serviceContext;
 
 	private EndpointReference toEPR;
+	
+	private ServiceClient _serviceClient;
 
 	private static org.apache.axis2.description.AxisOperation[] operations;
 	{// creating the Service
@@ -78,10 +79,7 @@
 				.createConfigurationContextFromFileSystem(axis2Home, axis2Home
 						+ "/axis2.xml");
 		configurationContext.getAxisConfiguration().addService(_service);
-		ServiceGroupContext sgc = new ServiceGroupContext(
-				this.configurationContext, (AxisServiceGroup) _service
-						.getParent());
-		this.serviceContext = new ServiceContext(_service, sgc);
+	    _serviceClient = new org.apache.axis2.client.ServiceClient(configurationContext,_service);
 
 	}
 
diff --git a/test/org/apache/kandula/integration/CompletionCommitTest.java b/test/org/apache/kandula/integration/CompletionCommitTest.java
index 8b72438..c65fa8f 100644
--- a/test/org/apache/kandula/integration/CompletionCommitTest.java
+++ b/test/org/apache/kandula/integration/CompletionCommitTest.java
@@ -28,14 +28,12 @@
 import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.transport.http.SimpleHTTPServer;
 import org.apache.kandula.initiator.TransactionManager;
-import org.apache.kandula.integration.xsd.CreditOperation;
-import org.apache.kandula.integration.xsd.DebitOperation;
 
 public class CompletionCommitTest extends TestCase {
 
 	private String repository = "target/testing-repository";
 
-	private KandulaDemoServiceKandulaDemoServiceSOAP11Port_httpStub stub;
+	private KandulaDemoServiceStub stub;
 
 	private SimpleHTTPServer server;
 
@@ -49,7 +47,7 @@
 		.createConfigurationContextFromFileSystem("target/initiator-repository", "target/initiator-repository"
 				+ "/axis2.xml");
 
-		stub = new KandulaDemoServiceKandulaDemoServiceSOAP11Port_httpStub(configurationContext, "http://localhost:8081/axis2/services/KandulaDemoService");
+		stub = new KandulaDemoServiceStub(configurationContext, "http://localhost:8081/axis2/services/KandulaDemoService");
 	}
 
 	protected void setUp() throws Exception {
diff --git a/test/org/apache/kandula/integration/KandulaDemoService.java b/test/org/apache/kandula/integration/KandulaDemoService.java
index 296651a..15ae251 100644
--- a/test/org/apache/kandula/integration/KandulaDemoService.java
+++ b/test/org/apache/kandula/integration/KandulaDemoService.java
@@ -28,18 +28,19 @@
 
 	}
 
-	public OMElement creditOperation(OMElement element) {
-		element.build();
-		element.detach();
-//		System.out.println("done com");
-		return element;
+	public void creditOperation() {
+//		element.build();
+//		element.detach();
+////		System.out.println("done com");
+//		return element;
+		
 	}
 
 
-	public OMElement debitOperation(OMElement element) throws AxisFault {
-		element.build();
-		element.detach();
-//		MessageContext msgcts = MessageContext.getCurrentMessageContext();
+	public void debitOperation() throws AxisFault {
+//		element.build();
+//		element.detach();
+////		MessageContext msgcts = MessageContext.getCurrentMessageContext();
 //		String reqID = (String) msgcts.getProperty(AbstractContext.REQUESTER_ID);
 //		ParticipantContext participantContext = (ParticipantContext) StorageUtils
 //		.getContext(reqID);
@@ -50,7 +51,7 @@
 //			throw new AxisFault(e);
 //		}
 //		throw new AxisFault("thilina");
-		return element;
+//		return element;
 	}
 
 }
\ No newline at end of file
diff --git a/test/org/apache/kandula/integration/ba/BAParticipantRegistrationTest.java b/test/org/apache/kandula/integration/ba/BAParticipantRegistrationTest.java
index 634f20c..6eb8667 100644
--- a/test/org/apache/kandula/integration/ba/BAParticipantRegistrationTest.java
+++ b/test/org/apache/kandula/integration/ba/BAParticipantRegistrationTest.java
@@ -25,15 +25,15 @@
 import org.apache.axis2.transport.http.SimpleHTTPServer;
 import org.apache.kandula.Constants;
 import org.apache.kandula.ba.MixedBusinessActivity;
-import org.apache.kandula.integration.KandulaDemoServiceKandulaDemoServiceSOAP11Port_httpStub;
-import org.apache.kandula.integration.xsd.CreditOperation;
-import org.apache.kandula.integration.xsd.DebitOperation;
+import org.apache.kandula.integration.CreditOperation;
+import org.apache.kandula.integration.DebitOperation;
+import org.apache.kandula.integration.KandulaDemoServiceStub;
 
 public class BAParticipantRegistrationTest extends TestCase {
 
 	private String repository = "target/testing-repository";
 
-	private KandulaDemoServiceKandulaDemoServiceSOAP11Port_httpStub stub;
+	private KandulaDemoServiceStub stub;
 
 	private SimpleHTTPServer server;
 
@@ -47,7 +47,7 @@
 				.createConfigurationContextFromFileSystem("target/initiator-repository",
 						"target/initiator-repository" + "/axis2.xml");
 
-		stub = new KandulaDemoServiceKandulaDemoServiceSOAP11Port_httpStub(configurationContext,
+		stub = new KandulaDemoServiceStub(configurationContext,
 				"http://localhost:8081/axis2/services/KandulaBADemoService");
 	}
 
