Index: FaultMediatorFactory.java
===================================================================
--- FaultMediatorFactory.java	(revision 477627)
+++ FaultMediatorFactory.java	(working copy)
@@ -75,6 +75,10 @@
                 faultMediator.setSoapVersion(FaultMediator.SOAP11);
             } else if (SOAP12.equals(version.getAttributeValue())) {
                 faultMediator.setSoapVersion(FaultMediator.SOAP12);
+            }else {
+                String msg = "Invalid SOAP version";
+                log.error(msg);
+                throw new SynapseException(msg);
             }
         }
 
Index: FaultMediatorSerializer.java
===================================================================
--- FaultMediatorSerializer.java	(revision 477627)
+++ FaultMediatorSerializer.java	(working copy)
@@ -42,6 +42,10 @@
 
     private static final Log log = LogFactory.getLog(FaultMediatorSerializer.class);
 
+    private static final String SOAP11 = "soap11";
+
+    private static final String SOAP12 = "soap12";
+
     public OMElement serializeMediator(OMElement parent, Mediator m) {
 
         if (!(m instanceof FaultMediator)) {
@@ -50,11 +54,17 @@
 
         FaultMediator mediator = (FaultMediator) m;
         OMElement fault = fac.createOMElement("makefault", synNS);
-
+         if(mediator.getSoapVersion()==FaultMediator.SOAP11) {
+           fault.addAttribute(fac.createOMAttribute(
+                "version", nullNS, SOAP11));
+        }else if(mediator.getSoapVersion()==FaultMediator.SOAP12) {
+           fault.addAttribute(fac.createOMAttribute(
+                "version", nullNS, SOAP12));
+        }
         OMElement code = fac.createOMElement("code", synNS, fault);
         if (mediator.getFaultCodeValue() != null) {
             code.addAttribute(fac.createOMAttribute(
-                "code", nullNS, mediator.getFaultCodeValue().toString()));
+                "value", nullNS, mediator.getFaultCodeValue().toString()));
 
         } else if (mediator.getFaultCodeExpr() != null) {
             code.addAttribute(fac.createOMAttribute(
@@ -68,7 +78,7 @@
         OMElement reason = fac.createOMElement("reason", synNS, fault);
         if (mediator.getFaultReasonValue() != null) {
             reason.addAttribute(fac.createOMAttribute(
-                "code", nullNS, mediator.getFaultReasonValue()));
+                "value", nullNS, mediator.getFaultReasonValue()));
 
         } else if (mediator.getFaultReasonExpr() != null) {
             reason.addAttribute(fac.createOMAttribute(
Index: SequenceMediatorFactory.java
===================================================================
--- SequenceMediatorFactory.java	(revision 477627)
+++ SequenceMediatorFactory.java	(working copy)
@@ -59,14 +59,23 @@
         SequenceMediator seqMediator = new SequenceMediator();
 
         OMAttribute n = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "name"));
+        OMAttribute e = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "onError"));
         if (n != null) {
             seqMediator.setName(n.getAttributeValue());
+             if (e != null) {
+                seqMediator.setErrorHandler(e.getAttributeValue());
+            }
             super.addChildren(elem, seqMediator);
 
         } else {
             n = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "ref"));
             if (n != null) {
                 seqMediator.setRef(n.getAttributeValue());
+                if (e != null) {
+                    String msg = "A sequence mediator swhich a reference to another sequence can not have 'ErrorHandler'";
+                    log.error(msg);
+                    throw new SynapseException(msg);
+                }
                 
             } else {
                 String msg = "A sequence mediator should be a named sequence or a reference to another sequence " +
@@ -74,13 +83,7 @@
                 log.error(msg);
                 throw new SynapseException(msg);
             }
-        }
-
-        OMAttribute e = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "onError"));
-        if (e != null) {
-            seqMediator.setErrorHandler(e.getAttributeValue());
-        }
-
+        }         
         return seqMediator;
     }
 }
