diff --git a/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java b/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
index a1ca35e..0d56ad3 100644
--- a/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
+++ b/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
@@ -15,6 +15,15 @@
  * TODO: Make all methods thread-safe
  */
 public class FlowManagerModule implements IFlowManagerService {
+    private ConflictDetectionPolicy conflictDetectionPolicy;
+
+    /**
+     * Constructor.
+     */
+    public FlowManagerModule() {
+        this.conflictDetectionPolicy = ConflictDetectionPolicy.FREE;
+    }
+
     @Override
     public boolean addFlow(IFlow flow) {
         BatchOperation<IFlow> ops = new BatchOperation<IFlow>();
@@ -56,14 +65,17 @@
 
     @Override
     public void setConflictDetectionPolicy(ConflictDetectionPolicy policy) {
-        // TODO Auto-generated method stub
-
+        if (policy == ConflictDetectionPolicy.FREE) {
+            conflictDetectionPolicy = policy;
+        } else {
+            throw new UnsupportedOperationException(
+                    policy.toString() + " is not supported.");
+        }
     }
 
     @Override
     public ConflictDetectionPolicy getConflictDetectionPolicy() {
-        // TODO Auto-generated method stub
-        return null;
+        return conflictDetectionPolicy;
     }
 
     @Override
diff --git a/src/test/java/net/onrc/onos/core/flowmanager/FlowManagerModuleTest.java b/src/test/java/net/onrc/onos/core/flowmanager/FlowManagerModuleTest.java
new file mode 100644
index 0000000..3467812
--- /dev/null
+++ b/src/test/java/net/onrc/onos/core/flowmanager/FlowManagerModuleTest.java
@@ -0,0 +1,51 @@
+package net.onrc.onos.core.flowmanager;
+
+import static org.junit.Assert.assertEquals;
+import net.onrc.onos.api.flowmanager.ConflictDetectionPolicy;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class FlowManagerModuleTest {
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+
+    @Before
+    public void setUp() throws Exception {
+    }
+
+    @After
+    public void tearDown() throws Exception {
+    }
+
+    /**
+     * Checks the default conflict detection policy is the FREE policy, and
+     * the other policies are not supported.
+     */
+    @Test
+    public void testConflictDetectionPolicy() {
+        FlowManagerModule flowManager = new FlowManagerModule();
+        assertEquals(ConflictDetectionPolicy.FREE,
+                flowManager.getConflictDetectionPolicy());
+
+        flowManager.setConflictDetectionPolicy(ConflictDetectionPolicy.FREE);
+        assertEquals(ConflictDetectionPolicy.FREE,
+                flowManager.getConflictDetectionPolicy());
+
+        thrown.expect(UnsupportedOperationException.class);
+        thrown.expectMessage("LOOSE is not supported.");
+        flowManager.setConflictDetectionPolicy(ConflictDetectionPolicy.LOOSE);
+        assertEquals(ConflictDetectionPolicy.FREE,
+                flowManager.getConflictDetectionPolicy());
+
+        thrown.expect(UnsupportedOperationException.class);
+        thrown.expectMessage("STRICT is not supported.");
+        flowManager.setConflictDetectionPolicy(ConflictDetectionPolicy.STRICT);
+        assertEquals(ConflictDetectionPolicy.FREE,
+                flowManager.getConflictDetectionPolicy());
+    }
+
+}
