diff --git a/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java b/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
index e7329e6..8a2f957 100644
--- a/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
+++ b/parser/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
@@ -57,26 +57,6 @@
         return parserOptions;
     }
 
-    @Override
-    protected OMNode createOMElement() throws OMException {
-        OMElement node;
-        String elementName = parser.getLocalName();
-        if (lastNode == null) {
-            node = constructNode(null, elementName);
-        } else if (lastNode.isComplete()) {
-            node = constructNode((OMContainer)lastNode.getParent(), elementName);
-            ((OMNodeEx)lastNode).setNextOMSibling(node);
-            ((OMNodeEx)node).setPreviousOMSibling(lastNode);
-        } else {
-            OMElement e = (OMElement)lastNode;
-            node = constructNode((OMElement)lastNode, elementName);
-            ((OMContainerEx)e).setFirstChild(node);
-        }
-        this.processNamespaceData(node);
-        processAttributes(node);
-        return node;
-    }
-
     protected Text.Type getTextType() {
         Text.Type ttype = Text.Type.TEXT;
         String type = parser.getAttributeValue(null, LN_TYPE);
@@ -117,6 +97,7 @@
         }
     }
 
+    @Override
     protected OMElement constructNode(OMContainer parent, String name) {
         OMElement element = null;
         if (!indoc) {
diff --git a/parser/src/main/java/org/apache/abdera/parser/stax/FOMComment.java b/parser/src/main/java/org/apache/abdera/parser/stax/FOMComment.java
index 5273327..a9a4f12 100644
--- a/parser/src/main/java/org/apache/abdera/parser/stax/FOMComment.java
+++ b/parser/src/main/java/org/apache/abdera/parser/stax/FOMComment.java
@@ -28,12 +28,9 @@
 @SuppressWarnings("unchecked")
 public class FOMComment extends OMCommentImpl implements Comment {
 
-    public FOMComment(OMContainer parent, OMFactory factory) {
-        super(parent, factory);
-    }
-
-    public FOMComment(OMContainer parent, String value, OMFactory factory) {
-        super(parent, value, factory);
+    public FOMComment(OMContainer parent, String contentText,
+            OMFactory factory, boolean fromBuilder) {
+        super(parent, contentText, factory, fromBuilder);
     }
 
     public String getText() {
diff --git a/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java b/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java
index 8e362fa..ce9e5ab 100644
--- a/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java
+++ b/parser/src/main/java/org/apache/abdera/parser/stax/FOMDocument.java
@@ -70,14 +70,6 @@
         super(new FOMFactory());
     }
 
-    protected FOMDocument(OMElement documentElement, OMXMLParserWrapper parserWrapper, OMFactory factory) {
-        super(documentElement, parserWrapper, factory);
-    }
-
-    protected FOMDocument(OMElement documentElement, OMXMLParserWrapper parserWrapper) {
-        super(documentElement, parserWrapper, new FOMFactory());
-    }
-
     protected FOMDocument(OMFactory factory) {
         super(factory);
     }
diff --git a/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java b/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
index e3b9f3a..ea1ef50 100644
--- a/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
+++ b/parser/src/main/java/org/apache/abdera/parser/stax/FOMElement.java
@@ -77,15 +77,15 @@
     private static final long serialVersionUID = 8024257594220911953L;
 
     protected FOMElement(String name, OMNamespace namespace, OMContainer parent, OMFactory factory) throws OMException {
-        super(name, namespace, parent, factory);
+        super(parent, name, namespace, null, factory, true);
     }
 
     protected FOMElement(QName qname, OMContainer parent, OMFactory factory) throws OMException {
-        super(qname.getLocalPart(), getOrCreateNamespace(qname, parent, factory), parent, factory);
+        super(parent, qname.getLocalPart(), getOrCreateNamespace(qname, parent, factory), null, factory, true);
     }
 
     protected FOMElement(String localName, OMContainer parent, OMFactory factory, OMXMLParserWrapper builder) {
-        super(localName, null, parent, builder, factory);
+        super(parent, localName, null, builder, factory, false);
     }
 
     private static OMNamespace getOrCreateNamespace(QName qname, OMContainer parent, OMFactory factory) {
diff --git a/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java b/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
index 96d9a2e..7c5da9b 100644
--- a/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
+++ b/parser/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
@@ -639,7 +639,7 @@
 
     @Override
     public OMText createOMText(Object arg0, boolean arg1) {
-        return new FOMTextValue(arg0, arg1, this);
+        return new FOMTextValue(null, arg0, arg1, this, false);
     }
 
     @Override
@@ -659,7 +659,7 @@
 
     @Override
     public OMText createOMText(OMContainer arg0, String arg1, int arg2) {
-        return new FOMTextValue(arg0, arg1, arg2, this);
+        return new FOMTextValue(arg0, arg1, arg2, this, false);
     }
 
     @Override
@@ -678,11 +678,6 @@
     }
 
     @Override
-    public OMText createOMText(String arg0, OMContainer arg1, OMXMLParserWrapper arg2) {
-        return new FOMTextValue(arg0, arg1, arg2, this);
-    }
-
-    @Override
     public OMText createOMText(String arg0, String arg1, boolean arg2) {
         return new FOMTextValue(arg0, arg1, arg2, this);
     }
@@ -694,12 +689,12 @@
 
     @Override
     public OMComment createOMComment(OMContainer arg0, String arg1) {
-        return new FOMComment(arg0, arg1, this);
+        return new FOMComment(arg0, arg1, this, false);
     }
 
     @Override
     public OMProcessingInstruction createOMProcessingInstruction(OMContainer arg0, String arg1, String arg2) {
-        return new FOMProcessingInstruction(arg0, arg1, arg2, this);
+        return new FOMProcessingInstruction(arg0, arg1, arg2, this, false);
     }
 
 }
diff --git a/parser/src/main/java/org/apache/abdera/parser/stax/FOMProcessingInstruction.java b/parser/src/main/java/org/apache/abdera/parser/stax/FOMProcessingInstruction.java
index 18b0d67..7367807 100644
--- a/parser/src/main/java/org/apache/abdera/parser/stax/FOMProcessingInstruction.java
+++ b/parser/src/main/java/org/apache/abdera/parser/stax/FOMProcessingInstruction.java
@@ -28,12 +28,9 @@
 @SuppressWarnings("unchecked")
 public class FOMProcessingInstruction extends OMProcessingInstructionImpl implements ProcessingInstruction {
 
-    public FOMProcessingInstruction(OMContainer parent, OMFactory factory) {
-        super(parent, factory);
-    }
-
-    public FOMProcessingInstruction(OMContainer parent, String target, String value, OMFactory factory) {
-        super(parent, target, value, factory);
+    public FOMProcessingInstruction(OMContainer parent, String target, String value,
+            OMFactory factory, boolean fromBuilder) {
+        super(parent, target, value, factory, fromBuilder);
     }
 
     public <T extends Base> T getParentElement() {
diff --git a/parser/src/main/java/org/apache/abdera/parser/stax/FOMTextValue.java b/parser/src/main/java/org/apache/abdera/parser/stax/FOMTextValue.java
index 721bada..f4f3eb3 100644
--- a/parser/src/main/java/org/apache/abdera/parser/stax/FOMTextValue.java
+++ b/parser/src/main/java/org/apache/abdera/parser/stax/FOMTextValue.java
@@ -26,14 +26,14 @@
 import org.apache.abdera.model.TextValue;
 import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.llom.OMTextImpl;
 
 @SuppressWarnings("unchecked")
 public class FOMTextValue extends OMTextImpl implements TextValue {
 
-    public FOMTextValue(Object dataHandler, boolean optimize, OMFactory factory) {
-        super(dataHandler, optimize, factory);
+    public FOMTextValue(OMContainer parent, Object dataHandler,
+            boolean optimize, OMFactory factory, boolean fromBuilder) {
+        super(parent, dataHandler, optimize, factory, fromBuilder);
     }
 
     public FOMTextValue(Object dataHandler, OMFactory factory) {
@@ -52,8 +52,9 @@
         super(parent, text, factory);
     }
 
-    public FOMTextValue(OMContainer parent, String text, int nodeType, OMFactory factory) {
-        super(parent, text, nodeType, factory);
+    public FOMTextValue(OMContainer parent, String text, int nodeType,
+            OMFactory factory, boolean fromBuilder) {
+        super(parent, text, nodeType, factory, fromBuilder);
     }
 
     public FOMTextValue(OMContainer parent, String text, OMFactory factory) {
@@ -68,10 +69,6 @@
         super(text, nodeType, factory);
     }
 
-    public FOMTextValue(String contentID, OMContainer parent, OMXMLParserWrapper builder, OMFactory factory) {
-        super(contentID, parent, builder, factory);
-    }
-
     public FOMTextValue(String text, OMFactory factory) {
         super(text, factory);
     }
diff --git a/pom.xml b/pom.xml
index 8f2da1d..50b2b0c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -380,13 +380,13 @@
       <dependency>
         <groupId>org.apache.ws.commons.axiom</groupId>
         <artifactId>axiom-api</artifactId>
-        <version>1.2.12</version>  
+        <version>1.2.14-SNAPSHOT</version>  
       </dependency>
 
       <dependency>
         <groupId>org.apache.ws.commons.axiom</groupId>
         <artifactId>axiom-impl</artifactId>
-        <version>1.2.12</version>  
+        <version>1.2.14-SNAPSHOT</version>  
 
       <exclusions>
         <exclusion>
