diff --git a/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java b/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
index 889db03..aa02da0 100644
--- a/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
+++ b/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
@@ -1,46 +1,15 @@
 package net.onrc.onos.core.topology;
 
-import java.util.Collection;
-
 /**
- * Interface which needs to be implemented to receive Topology events from
+ * Interface that needs to be implemented to receive Topology events from
  * the Topology.
  */
 public interface ITopologyListener {
     /**
-     * Topology events.
-     * <p/>
-     * The recommended ordering rules for applying/processing the events is:
-     * (a) Process "added" events before "removed" events.
-     * (b) The ordering of the "added" events should be:
-     * addedSwitchEvents, addedPortEvents, addedLinkEvents,
-     * addedDeviceEvents
-     * The above ordering guarantees that adding a port for example
-     * will be processed after the corresponding switch itself is added.
-     * (c) The ordering of the "removed" events should be:
-     * removedDeviceEvents, removedLinkEvents, removedPortEvents,
-     * removedSwitchEvents
-     * The above ordering guarantees that removing a port for example
-     * will be processed before the corresponding switch itself is
-     * removed.
+     * Topology events that have been generated.
      *
-     * @param addedSwitchEvents   the Added Switch Events.
-     * @param removedSwitchEvents the Removed Switch Events.
-     * @param addedPortEvents     the Added Port Events.
-     * @param removedPortEvents   the Removed Port Events.
-     * @param addedLinkEvents     the Added Link Events.
-     * @param removedLinkEvents   the Removed Link Events.
-     * @param addedDeviceEvents   the Added Device Events.
-     * @param removedDeviceEvents the Removed Device Events.
+     * @param topologyEvents the generated Topology Events
+     * @see TopologyEvents
      */
-    // CHECKSTYLE:OFF suppress warning about too many parameters
-    public void topologyEvents(Collection<SwitchEvent> addedSwitchEvents,
-                                   Collection<SwitchEvent> removedSwitchEvents,
-                                   Collection<PortEvent> addedPortEvents,
-                                   Collection<PortEvent> removedPortEvents,
-                                   Collection<LinkEvent> addedLinkEvents,
-                                   Collection<LinkEvent> removedLinkEvents,
-                                   Collection<DeviceEvent> addedDeviceEvents,
-                                   Collection<DeviceEvent> removedDeviceEvents);
-    // CHECKSTYLE:ON
+    public void topologyEvents(TopologyEvents topologyEvents);
 }
