diff --git a/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java b/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
new file mode 100644
index 0000000..889db03
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
@@ -0,0 +1,46 @@
+package net.onrc.onos.core.topology;
+
+import java.util.Collection;
+
+/**
+ * Interface which 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.
+     *
+     * @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.
+     */
+    // 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
+}
