Index: core/src/main/java/org/apache/abdera/factory/ExtensionFactoryMap.java
===================================================================
--- core/src/main/java/org/apache/abdera/factory/ExtensionFactoryMap.java	(revision 652071)
+++ core/src/main/java/org/apache/abdera/factory/ExtensionFactoryMap.java	(working copy)
@@ -17,105 +17,101 @@
 */
 package org.apache.abdera.factory;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import javax.xml.namespace.QName;
-
 import org.apache.abdera.model.Base;
 import org.apache.abdera.model.Document;
 import org.apache.abdera.model.Element;
 
-public class ExtensionFactoryMap 
-  implements ExtensionFactory {
+import javax.xml.namespace.QName;
+import java.util.*;
 
-  private final List<ExtensionFactory> factories;
-  private final Map<Element,Element> wrappers;
-  
-  public ExtensionFactoryMap(List<ExtensionFactory> factories) {
-    this.factories = Collections.synchronizedList(factories);
-    this.wrappers = Collections.synchronizedMap(
-      new WeakHashMap<Element,Element>());
-  }
+public class ExtensionFactoryMap
+        implements ExtensionFactory {
 
-  @SuppressWarnings("unchecked")
-  public <T extends Element> T getElementWrapper(Element internal) {
-    if (internal == null) return null;
-    T t = (T)wrappers.get(internal);
-    if (t == null) {
-      synchronized(factories) {
+    private final List<ExtensionFactory> factories;
+
+    public ExtensionFactoryMap(List<ExtensionFactory> factories) {
+        this.factories = Collections.synchronizedList(factories);
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T extends Element> T getElementWrapper(Element internal) {
+        if (internal == null) {
+            return null;
+        }
+        T t = null;
         for (ExtensionFactory factory : factories) {
-          t = (T) factory.getElementWrapper(internal);
-          if (t != null && t != internal) {
-            setElementWrapper(internal,t);
-            return t;
-          }
+            t = (T) factory.getElementWrapper(internal);
+            if (t != null && t != internal) {
+                return t;
+            }
         }
-      }
-      t = (T) internal;
+        return (t != null) ? t : (T) internal;
     }
-    return (t != null) ? t : (T)internal;
-  }
-  
-  public void setElementWrapper(Element internal, Element wrapper) {
-    wrappers.put(internal, wrapper);
-  }
 
-  public String[] getNamespaces() {
-    List<String> ns = new ArrayList<String>();
-    synchronized(factories) {
-      for (ExtensionFactory factory : factories) {
-        String[] namespaces = factory.getNamespaces();
-        for (String uri : namespaces) ns.add(uri);
-      }
+    public void setElementWrapper(Element internal, Element wrapper) {
+        // Now a do nothing method, since we removed wrappers WeakHashMap>
     }
-    return ns.toArray(new String[ns.size()]);
-  }
 
-  public boolean handlesNamespace(String namespace) {
-    synchronized(factories) {
-      for (ExtensionFactory factory : factories) {
-        if (factory.handlesNamespace(namespace)) return true;
-      }
+    public String[] getNamespaces() {
+        List<String> ns = new ArrayList<String>();
+        synchronized (factories) {
+            for (ExtensionFactory factory : factories) {
+                String[] namespaces = factory.getNamespaces();
+                for (String uri : namespaces) {
+                    ns.add(uri);
+                }
+            }
+        }
+        return ns.toArray(new String[ns.size()]);
     }
-    return false;
-  }
 
-  public <T extends Element> T newExtensionElement(
-    QName qname, 
-    Base parent, 
-    Factory factory) {
-      return null;
-  }
-  
-  public void addFactory(ExtensionFactory factory) {
-    if (!factories.contains(factory))
-      factories.add(factory);
-  }
+    public boolean handlesNamespace(String namespace) {
+        synchronized (factories) {
+            for (ExtensionFactory factory : factories) {
+                if (factory.handlesNamespace(namespace)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
 
-  public <T extends Base> String getMimeType(T base) {
-    Element element = base instanceof Element ? (Element)base : ((Document)base).getRoot();
-    String namespace = element.getQName().getNamespaceURI();
-    synchronized(factories) {
-      for (ExtensionFactory factory : factories) {
-        if (factory.handlesNamespace(namespace)) 
-          return factory.getMimeType(base);
-      }
+    public <T extends Element> T newExtensionElement(
+            QName qname,
+            Base parent,
+            Factory factory) {
+        return null;
     }
-    return null;
-  }
-  
-  public String[] listExtensionFactories() {
-    List<String> names = new ArrayList<String>();
-    synchronized(factories) {
-      for (ExtensionFactory factory : factories) {
-        String name = factory.getClass().getName();
-        if (!names.contains(name)) names.add(name);
-      }
+
+    public void addFactory(ExtensionFactory factory) {
+        if (!factories.contains(factory)) {
+            factories.add(factory);
+        }
     }
-    return names.toArray(new String[names.size()]);
-  }
+
+    public <T extends Base> String getMimeType(T base) {
+        Element element = base instanceof Element ? (Element) base : ((Document) base).getRoot();
+        String namespace = element.getQName().getNamespaceURI();
+        synchronized (factories) {
+            for (ExtensionFactory factory : factories) {
+                if (factory.handlesNamespace(namespace)) {
+                    return factory.getMimeType(base);
+                }
+            }
+        }
+        return null;
+    }
+
+    public String[] listExtensionFactories() {
+        List<String> names = new ArrayList<String>();
+        synchronized (factories) {
+            for (ExtensionFactory factory : factories) {
+                String name = factory.getClass().getName();
+                if (!names.contains(name)) {
+                    names.add(name);
+                }
+            }
+        }
+        return names.toArray(new String[names.size()]);
+    }
 }
