diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
index 031a528..5fd7863 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
@@ -39,21 +39,22 @@
 
 import net.floodlightcontroller.core.FloodlightContext;
 import net.floodlightcontroller.core.IFloodlightProviderService;
+import net.floodlightcontroller.core.IFloodlightProviderService.Role;
 import net.floodlightcontroller.core.IHAListener;
 import net.floodlightcontroller.core.IInfoProvider;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.IFloodlightProviderService.Role;
+import net.floodlightcontroller.core.IUpdate;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.core.util.SingletonTask;
 import net.floodlightcontroller.devicemanager.IDevice;
+import net.floodlightcontroller.devicemanager.IDeviceListener;
 import net.floodlightcontroller.devicemanager.IDeviceService;
 import net.floodlightcontroller.devicemanager.IEntityClass;
 import net.floodlightcontroller.devicemanager.IEntityClassListener;
 import net.floodlightcontroller.devicemanager.IEntityClassifierService;
-import net.floodlightcontroller.devicemanager.IDeviceListener;
 import net.floodlightcontroller.devicemanager.SwitchPort;
 import net.floodlightcontroller.devicemanager.web.DeviceRoutable;
 import net.floodlightcontroller.flowcache.IFlowReconcileListener;
@@ -71,8 +72,6 @@
 import net.floodlightcontroller.topology.ITopologyService;
 import net.floodlightcontroller.util.MultiIterator;
 import net.onrc.onos.ofcontroller.linkdiscovery.ILinkDiscovery.LDUpdate;
-import static net.floodlightcontroller.devicemanager.internal.
-DeviceManagerImpl.DeviceUpdate.Change.*;
 
 import org.openflow.protocol.OFMatchWithSwDpid;
 import org.openflow.protocol.OFMessage;
@@ -197,14 +196,14 @@
      */
     protected Set<IDeviceListener> deviceListeners;
 
+    public enum DeviceUpdateType {
+        ADD, DELETE, CHANGE;
+    }
+    
     /**
      * A device update event to be dispatched
      */
-    protected static class DeviceUpdate {
-        public enum Change {
-            ADD, DELETE, CHANGE;
-        }
-
+    protected class DeviceUpdate implements IUpdate {
         /**
          * The affected device
          */
@@ -213,18 +212,18 @@
         /**
          * The change that was made
          */
-        protected Change change;
+        protected DeviceUpdateType updateType;
 
         /**
          * If not added, then this is the list of fields changed
          */
         protected EnumSet<DeviceField> fieldsChanged;
 
-        public DeviceUpdate(IDevice device, Change change,
+        public DeviceUpdate(IDevice device, DeviceUpdateType updateType,
                             EnumSet<DeviceField> fieldsChanged) {
             super();
             this.device = device;
-            this.change = change;
+            this.updateType = updateType;
             this.fieldsChanged = fieldsChanged;
         }
 
@@ -232,9 +231,46 @@
         public String toString() {
             String devIdStr = device.getEntityClass().getName() + "::" +
                     device.getMACAddressString();
-            return "DeviceUpdate [device=" + devIdStr + ", change=" + change
+            return "DeviceUpdate [device=" + devIdStr + ", updateType=" + updateType
                    + ", fieldsChanged=" + fieldsChanged + "]";
         }
+
+		@Override
+		public void dispatch() {
+			if (logger.isTraceEnabled()) {
+                logger.trace("Dispatching device update: {}", this);
+            }
+            for (IDeviceListener listener : deviceListeners) {
+                switch (updateType) {
+                    case ADD:
+                        listener.deviceAdded(device);
+                        break;
+                    case DELETE:
+                        listener.deviceRemoved(device);
+                        break;
+                    case CHANGE:
+                        for (DeviceField field : fieldsChanged) {
+                            switch (field) {
+                                case IPV4:
+                                    listener.deviceIPV4AddrChanged(device);
+                                    break;
+                                case SWITCH:
+                                case PORT:
+                                    //listener.deviceMoved(update.device);
+                                    break;
+                                case VLAN:
+                                    listener.deviceVlanChanged(device);
+                                    break;
+                                default:
+                                    logger.debug("Unknown device field changed {}",
+                                                fieldsChanged.toString());
+                                    break;
+                            }
+                        }
+                        break;
+                }
+            }
+		}
         
     }
 
@@ -1104,7 +1140,7 @@
                 // generate new device update
                 deviceUpdates =
                         updateUpdates(deviceUpdates,
-                                      new DeviceUpdate(device, ADD, null));
+                                      new DeviceUpdate(device, DeviceUpdateType.ADD, null));
 
                 break;
             }
@@ -1162,7 +1198,7 @@
                 if (changedFields.size() > 0)
                     deviceUpdates =
                     updateUpdates(deviceUpdates,
-                                  new DeviceUpdate(newDevice, CHANGE,
+                                  new DeviceUpdate(newDevice, DeviceUpdateType.CHANGE,
                                                    changedFields));
 
                 // update the device map with a replace call
@@ -1211,7 +1247,7 @@
                 // generate new device update
                 deviceUpdates =
                         updateUpdates(deviceUpdates,
-                                      new DeviceUpdate(dev, DELETE, null));
+                                      new DeviceUpdate(dev, DeviceUpdateType.DELETE, null));
             }
         }
 
@@ -1267,6 +1303,15 @@
      * @param updates the updates to process.
      */
     protected void processUpdates(Queue<DeviceUpdate> updates) {
+    	if (updates == null) {
+    		return;
+    	}
+    	
+    	DeviceUpdate update;
+    	while (null != (update = updates.poll())) {
+    		floodlightProvider.publishUpdate(update);
+    	}
+    	/*
         if (updates == null) return;
         DeviceUpdate update = null;
         while (null != (update = updates.poll())) {
@@ -1304,6 +1349,7 @@
                 }
             }
         }
+        */
     }
     
     /**
@@ -1481,7 +1527,7 @@
                         changedFields.addAll(findChangedFields(newDevice, e));
                     }
                     if (changedFields.size() > 0)
-                        deviceUpdates.add(new DeviceUpdate(d, CHANGE,
+                        deviceUpdates.add(new DeviceUpdate(d, DeviceUpdateType.CHANGE,
                                                            changedFields));
 
                     if (!deviceMap.replace(newDevice.getDeviceKey(),
@@ -1495,7 +1541,7 @@
                             continue;
                     }
                 } else {
-                    deviceUpdates.add(new DeviceUpdate(d, DELETE, null));
+                    deviceUpdates.add(new DeviceUpdate(d, DeviceUpdateType.DELETE, null));
                     if (!deviceMap.remove(d.getDeviceKey(), d))
                         // concurrent modification; try again
                         // need to use device that is the map now for the next
@@ -1705,8 +1751,7 @@
                 new LinkedList<DeviceUpdate>();
         // delete this device and then re-learn all the entities
         this.deleteDevice(device);
-        deviceUpdates.add(new DeviceUpdate(device, 
-                DeviceUpdate.Change.DELETE, null));
+        deviceUpdates.add(new DeviceUpdate(device, DeviceUpdateType.DELETE, null));
         if (!deviceUpdates.isEmpty())
             processUpdates(deviceUpdates);
         for (Entity entity: device.entities ) {
