diff --git a/src/main/java/net/onrc/onos/core/datagrid/IEventChannel.java b/src/main/java/net/onrc/onos/core/datagrid/IEventChannel.java
new file mode 100644
index 0000000..5874b31
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/datagrid/IEventChannel.java
@@ -0,0 +1,98 @@
+package net.onrc.onos.core.datagrid;
+
+import java.util.Collection;
+
+/**
+ * Event Channel Interface.
+ */
+public interface IEventChannel<K, V> {
+    /**
+     * Startup the channel operation.
+     */
+    void startup();
+
+    /**
+     * Shutdown the channel operation.
+     */
+    void shutdown();
+
+    /**
+     * Verify the key and value types of a channel.
+     *
+     * @param typeK the type of the key to verify.
+     * @param typeV the type of the value to verify.
+     * @return true if the key and value types of the channel match,
+     * otherwise false.
+     */
+    boolean verifyKeyValueTypes(Class typeK, Class typeV);
+
+    /**
+     * Add event channel listener.
+     *
+     * @param listener the listener to add.
+     */
+    void addListener(IEventChannelListener<K, V> listener);
+
+    /**
+     * Remove event channel listener.
+     *
+     * @param listener the listener to remove.
+     */
+    void removeListener(IEventChannelListener<K, V> listener);
+
+    /**
+     * Add an entry to the channel.
+     *
+     * @param key   the key of the entry to add.
+     * @param value the value of the entry to add.
+     */
+    void addEntry(K key, V value);
+
+    /**
+     * Add a transient entry to the channel.
+     * <p/>
+     * The added entry is transient and will automatically timeout after 1ms.
+     *
+     * @param key   the key of the entry to add.
+     * @param value the value of the entry to add.
+     */
+    void addTransientEntry(K key, V value);
+
+    /**
+     * Remove an entry from the channel.
+     *
+     * @param key the key of the entry to remove.
+     */
+    void removeEntry(K key);
+
+    /**
+     * Update an entry in the channel.
+     *
+     * @param key   the key of the entry to update.
+     * @param value the value of the entry to update.
+     */
+    void updateEntry(K key, V value);
+
+    /**
+     * Get an entry from the channel.
+     *
+     * @param key the key of the entry to get.
+     * @return the entry if found, otherwise null.
+     */
+    @Deprecated
+    V getEntry(K key);
+
+    /**
+     * Get all entries in the channel.
+     *
+     * @return all entries that are currently in the channel.
+     */
+    @Deprecated
+    Collection<V> getAllEntries();
+
+    /**
+     * Remove all entries in the channel.
+     */
+    @Deprecated
+    void removeAllEntries();
+}
