diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
index a0dee52830bafafa0d851d4dccd03f0c15077500..ac8fa0d6c3f33ab27397005855a86286132a5003 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
@@ -2102,9 +2102,8 @@ IFlowReconcileListener, IInfoProvider {
      * Topology listener method.
      */
     @Override
-    public void topologyChanged() {
+    public void topologyChanged(List<LDUpdate> updateList) {
         Iterator<Device> diter = deviceMap.values().iterator();
-        List<LDUpdate> updateList = topology.getLastLinkUpdates();
         if (updateList != null) {
             if (logger.isTraceEnabled()) {
                 for(LDUpdate update: updateList) {
diff --git a/src/main/java/net/floodlightcontroller/flowcache/PortDownReconciliation.java b/src/main/java/net/floodlightcontroller/flowcache/PortDownReconciliation.java
index 24ee7c733bf9dc9395c91a18fecdbe997d8bdf8d..a2f57bb9cc166e073e2ebacf4b950fdc292b6a12 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/PortDownReconciliation.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/PortDownReconciliation.java
@@ -85,8 +85,8 @@ public class PortDownReconciliation implements IFloodlightModule,
 
     // ITopologyListener
     @Override
-    public void topologyChanged() {
-        for (LDUpdate ldu : topology.getLastLinkUpdates()) {
+    public void topologyChanged(List<LDUpdate> appliedUpdates) {
+        for (LDUpdate ldu : appliedUpdates) {
             if (ldu.getOperation()
                    .equals(ILinkDiscovery.UpdateOperation.PORT_DOWN)) {
 
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
index b6aa79d8be7586af95578c016ebf3dcd832b6559..0e27157669190a166803b73bdeac6c7233b04e49 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -923,9 +923,9 @@ public class LinkDiscoveryManager implements IOFMessageListener,
     private boolean portEnabled(OFPhysicalPort port) {
         if (port == null) return false;
         if ((OFPortConfig.OFPPC_PORT_DOWN.getValue() & port.getConfig()) > 0)
-                                                                             return false;
+            return false;
         if ((OFPortState.OFPPS_LINK_DOWN.getValue() & port.getState()) > 0)
-                                                                           return false;
+            return false;
         // Port STP state doesn't work with multiple VLANs, so ignore it for now
         // if ((port.getState() & OFPortState.OFPPS_STP_MASK.getValue()) ==
         // OFPortState.OFPPS_STP_BLOCK.getValue())
@@ -1816,7 +1816,7 @@ public class LinkDiscoveryManager implements IOFMessageListener,
     //   Storage Listener
     //*********************
     /**
-     * Sets the IStorageSource to use for ITology
+     * Sets the IStorageSource to use for Topology
      *
      * @param storageSource
      *            the storage source to use
diff --git a/src/main/java/net/floodlightcontroller/topology/ITopologyListener.java b/src/main/java/net/floodlightcontroller/topology/ITopologyListener.java
index 85dd19897d445a966eeda9f0711eb53d5a1e63aa..56933ca59515cf242c4d3b7108975b0c0fbb034a 100644
--- a/src/main/java/net/floodlightcontroller/topology/ITopologyListener.java
+++ b/src/main/java/net/floodlightcontroller/topology/ITopologyListener.java
@@ -16,9 +16,13 @@
 
 package net.floodlightcontroller.topology;
 
+import java.util.List;
+
+import net.floodlightcontroller.linkdiscovery.ILinkDiscovery.LDUpdate;
+
 public interface ITopologyListener {
     /**
      * Happens when the switch clusters are recomputed
      */
-    void topologyChanged();
+    void topologyChanged(List<LDUpdate> linkUpdates);
 }
diff --git a/src/main/java/net/floodlightcontroller/topology/ITopologyService.java b/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
index 8bbb82a1b83c73946c6346d41cca0e1287f4dadb..5635d637dabfe00652909e1b46184b0fcadb5091 100644
--- a/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
+++ b/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
@@ -203,14 +203,6 @@ public interface ITopologyService extends IFloodlightService  {
      */
     public Set<NodePortTuple> getBlockedPorts();
 
-    /**
-     * ITopologyListener provides topologyChanged notification, 
-     * but not *what* the changes were.  
-     * This method returns the delta in the linkUpdates between the current and the previous topology instance.
-     * @return
-     */
-    public List<LDUpdate> getLastLinkUpdates();
-
     /**
      * Switch methods
      */
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
index 775ba64f74891b90d42452a6f4f16d5cda4fc81b..69a5d09daa334706612c39d03039bda8dffa4bb9 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
@@ -19,6 +19,7 @@ package net.floodlightcontroller.topology;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -126,7 +127,6 @@ public class TopologyManager implements
     protected ArrayList<ITopologyListener> topologyAware;
 
     protected BlockingQueue<LDUpdate> ldUpdates;
-    protected List<LDUpdate> appliedUpdates;
 
     // These must be accessed using getCurrentInstance(), not directly
     protected TopologyInstance currentInstance;
@@ -210,10 +210,10 @@ public class TopologyManager implements
         linksUpdated = false;
         dtLinksUpdated = false;
         tunnelPortsUpdated = false;
-        applyUpdates();
+        List<LDUpdate> appliedUpdates = applyUpdates();
         newInstanceFlag = createNewInstance();
         lastUpdateTime = new Date();
-        informListeners();
+        informListeners(appliedUpdates);
         return newInstanceFlag;
     }
 
@@ -576,11 +576,6 @@ public class TopologyManager implements
 
         return blockedPorts;
     }
-
-    @Override
-    public List<LDUpdate> getLastLinkUpdates() {
-    	return appliedUpdates;
-    }
     ////////////////////////////////////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////
 
@@ -765,7 +760,6 @@ public class TopologyManager implements
         tunnelPorts = new HashSet<NodePortTuple>();
         topologyAware = new ArrayList<ITopologyListener>();
         ldUpdates = new LinkedBlockingQueue<LDUpdate>();
-        appliedUpdates = new ArrayList<LDUpdate>();
         haListener = new HAListenerDelegate();
     }
 
@@ -1015,8 +1009,8 @@ public class TopologyManager implements
             message="Error reading link discovery update.",
             explanation="Unable to process link discovery update",
             recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
-    public void applyUpdates() {
-        appliedUpdates.clear();
+    public List<LDUpdate> applyUpdates() {
+        List<LDUpdate> appliedUpdates = new ArrayList<LDUpdate>();
         LDUpdate update = null;
         while (ldUpdates.peek() != null) {
             try {
@@ -1056,6 +1050,7 @@ public class TopologyManager implements
             // Add to the list of applied updates.
             appliedUpdates.add(update);
         }
+        return (Collections.unmodifiableList(appliedUpdates));
     }
 
     protected void addOrUpdateSwitch(long sw) {
@@ -1195,14 +1190,14 @@ public class TopologyManager implements
 
 
 
-    public void informListeners() {
+    public void informListeners(List<LDUpdate> linkUpdates) {
 
         if (role != null && role != Role.MASTER)
             return;
 
         for(int i=0; i<topologyAware.size(); ++i) {
             ITopologyListener listener = topologyAware.get(i);
-            listener.topologyChanged();
+            listener.topologyChanged(linkUpdates);
         }
     }
 
@@ -1368,7 +1363,6 @@ public class TopologyManager implements
         switchPortLinks.clear();
         portBroadcastDomainLinks.clear();
         directLinks.clear();
-        appliedUpdates.clear();
     }
 
     /**
@@ -1428,6 +1422,4 @@ public class TopologyManager implements
         ports.addAll(ofpList);
         return ports;
     }
-
-
 }