diff --git a/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java b/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
index 7f4f77d..5f73d9a 100644
--- a/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
+++ b/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
@@ -27,7 +27,6 @@
 import net.onrc.onos.core.util.OnosInstanceId;
 
 import org.projectfloodlight.openflow.protocol.OFControllerRole;
-import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.OFType;
 
 /**
@@ -193,14 +192,6 @@
     //************************
 
     /**
-     * Gets the Factory
-     *
-     * @return an OpenFlow message factory
-     */
-    public OFFactory getOFMessageFactory_13();
-    public OFFactory getOFMessageFactory_10();
-
-    /**
      * Publish updates to Controller updates queue
      *
      * @param IUpdate
diff --git a/src/main/java/net/floodlightcontroller/core/IOFSwitch.java b/src/main/java/net/floodlightcontroller/core/IOFSwitch.java
index 54e4408..530da78 100644
--- a/src/main/java/net/floodlightcontroller/core/IOFSwitch.java
+++ b/src/main/java/net/floodlightcontroller/core/IOFSwitch.java
@@ -35,10 +35,9 @@
 import org.projectfloodlight.openflow.protocol.OFActionType;
 import org.projectfloodlight.openflow.protocol.OFCapabilities;
 import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
-import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
+import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.OFMessage;
 import org.projectfloodlight.openflow.protocol.OFPortDesc;
-import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply;
 import org.projectfloodlight.openflow.protocol.OFPortStatus;
 import org.projectfloodlight.openflow.protocol.OFStatsReply;
 import org.projectfloodlight.openflow.protocol.OFStatsRequest;
@@ -205,10 +204,26 @@
      */
     public Set<OFActionType> getActions();
 
-    public void setOFVersion(OFVersion ofv);
+    /**
+     * Gets an OpenFlow message factory that can be used to create messages to
+     * send to this switch.
+     *
+     * @return an OFFactory for the correct OpenFlow version
+     */
+    public OFFactory getFactory();
 
+    /**
+     * Gets the OpenFlow version (eg. OF1.0, OF1.3) for this switch.
+     *
+     * @return the OpenFlow version of the switch
+     */
     public OFVersion getOFVersion();
 
+    /**
+     * Sets the OpenFlow version (eg. OF1.0, OF1.3) for this switch.
+     */
+    public void setOFVersion(OFVersion ofv);
+
 
     //************************
     //  Switch port related
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index e80311b..b47962f 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -35,7 +35,6 @@
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -938,12 +937,21 @@
 //        }
 //    }
 
-    @Override
+
+    /**
+     * Gets an OpenFlow message factory for version 1.0.
+     *
+     * @return an OpenFlow 1.0 message factory
+     */
     public OFFactory getOFMessageFactory_10() {
         return factory10;
     }
 
-    @Override
+    /**
+     * Gets an OpenFlow message factory for version 1.3.
+     *
+     * @return an OpenFlow 1.3 message factory
+     */
     public OFFactory getOFMessageFactory_13() {
         return factory13;
     }
diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
index c3d6e63..1b2b0cf 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
@@ -62,6 +62,8 @@
 import org.projectfloodlight.openflow.protocol.OFActionType;
 import org.projectfloodlight.openflow.protocol.OFCapabilities;
 import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFFactories;
+import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
 import org.projectfloodlight.openflow.protocol.OFMessage;
 import org.projectfloodlight.openflow.protocol.OFPortConfig;
@@ -269,14 +271,19 @@
         return stringId;
     }
 
-    /** Retrieve the openflow version (eg. OF1.0, OF1.3) for this switch
-     */
-    public OFVersion getOFVersion() {
-	return ofversion;
+    @Override
+    public OFFactory getFactory() {
+        return OFFactories.getFactory(ofversion);
     }
 
+    @Override
+    public OFVersion getOFVersion() {
+        return ofversion;
+    }
+
+    @Override
     public void setOFVersion(OFVersion ofv) {
-	ofversion = ofv;
+        ofversion = ofv;
     }
 
     /**
@@ -1223,10 +1230,10 @@
     public void clearAllFlowMods() {
         // Delete all pre-existing flows
 
-	// by default if match is not specified, then an empty list of matches
-	// is sent, resulting in a wildcard-all flows
-	// XXX fix this later
-	OFMessage fm = floodlightProvider.getOFMessageFactory_13()
+        // by default if match is not specified, then an empty list of matches
+        // is sent, resulting in a wildcard-all flows
+        // XXX fix this later to be sure it works for both 1.0 and 1.3
+        OFMessage fm = getFactory()
 						.buildFlowDelete()
 						.setOutPort(OFPort.ANY)
 						.setOutGroup(OFGroup.ANY)
