diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
index 723f35e..7c24144 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
@@ -32,6 +32,9 @@
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
+import org.onosproject.net.device.DeviceEvent;
+import org.onosproject.net.device.DeviceListener;
+import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.flow.DefaultTrafficSelector;
 import org.onosproject.net.flow.DefaultTrafficTreatment;
 import org.onosproject.net.flow.TrafficSelector;
@@ -70,34 +73,36 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected FlowObjectiveService flowObjectiveService;
 
-    private static final int PRIORITY = 50000;
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected DeviceService deviceService;
 
-    private short openflowPort = 6633;
+    private InternalDeviceListener deviceListener = new InternalDeviceListener();
+
+    private static final int PRIORITY = 50000;
 
     private short radiusPort = 1812;
 
     private DeviceId fabricDeviceId = DeviceId.deviceId("of:5e3e486e73000187");
 
-    private ConnectPoint oltConnectPoint =
-            new ConnectPoint(fabricDeviceId, PortNumber.portNumber(2));
-    private ConnectPoint oltControllerConnectPoint =
-            new ConnectPoint(fabricDeviceId, PortNumber.portNumber(1));
-    private ConnectPoint radiusConnectPoint =
-            new ConnectPoint(fabricDeviceId, PortNumber.portNumber(5));
-
     private final Multimap<VlanId, ConnectPoint> vlans = HashMultimap.create();
 
     @Activate
     public void activate() {
         appId = coreService.registerApplication("org.onosproject.cordfabric");
 
-        setupDefaultFlows();
+        deviceService.addListener(deviceListener);
+
+        if (deviceService.isAvailable(fabricDeviceId)) {
+            setupDefaultFlows();
+        }
 
         log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
+        deviceService.removeListener(deviceListener);
+
         log.info("Stopped");
     }
 
@@ -112,8 +117,6 @@
                 .punt()
                 .build();
 
-
-
         ForwardingObjective ofToController = DefaultForwardingObjective.builder()
                 .fromApp(appId)
                 .makePermanent()
@@ -123,7 +126,6 @@
                 .withTreatment(forwardToController)
                 .add();
 
-
         flowObjectiveService.forward(fabricDeviceId, ofToController);
     }
 
@@ -223,4 +225,23 @@
             log.info("Flow objective operation failed: {}", objective);
         }
     }
+
+    /**
+     * Internal listener for device service events.
+     */
+    private class InternalDeviceListener implements DeviceListener {
+        @Override
+        public void event(DeviceEvent event) {
+            switch (event.type()) {
+            case DEVICE_ADDED:
+            case DEVICE_AVAILABILITY_CHANGED:
+                if (event.subject().id().equals(fabricDeviceId) &&
+                        deviceService.isAvailable(event.subject().id())) {
+                    setupDefaultFlows();
+                }
+            default:
+                break;
+            }
+        }
+    }
 }
