diff --git a/adapters/interface.py b/adapters/interface.py
index d1ac455..b0390d8 100644
--- a/adapters/interface.py
+++ b/adapters/interface.py
@@ -259,209 +259,18 @@
         :return: Proto Message (TBD)
         """
 
-    # def start():
-    #     """
-    #     Called once after adapter instance is laoded. Can be used to async
-    #     initialization.
-    #     :return: (None or Deferred)
-    #     """
-    #
-    # def stop():
-    #     """
-    #     Called once before adapter is unloaded. It can be used to perform
-    #     any cleanup after the adapter.
-    #     :return: (None or Deferred)
-    #     """
-    #
-    # def receive_inter_adapter_message(msg):
-    #     """
-    #     Called when the adapter recieves a message that was sent to it directly
-    #     from another adapter. An adapter may register for these messages by calling
-    #     the register_for_inter_adapter_messages() method in the adapter agent.
-    #     Note that it is the responsibility of the sending and receiving
-    #     adapters to properly encode and decode the message.
-    #     :param msg: The message contents.
-    #     :return: None
-    #     """
-    #
-    # def send_proxied_message(proxy_address, msg):
-    #     """
-    #     Forward a msg to a child device of device, addressed by the given
-    #     proxy_address=Device.ProxyAddress().
-    #     :param proxy_address: Address info for the parent device
-    #      to route the message to the child device. This was given to the
-    #      child device by the parent device at the creation of the child
-    #      device.
-    #     :param msg: (str) The actual message to send.
-    #     :return: (Deferred(None) or None) The return of this method should
-    #      indicate that the message was successfully *sent*.
-    #     """
-    #
-    # def receive_proxied_message(proxy_address, msg):
-    #     """
-    #     Pass an async message (arrived via a proxy) to this device.
-    #     :param proxy_address: Address info for the parent device
-    #      to route the message to the child device. This was given to the
-    #      child device by the parent device at the creation of the child
-    #      device. Note this is the proxy_address with which the adapter
-    #      had to register prior to receiving proxied messages.
-    #     :param msg: (str) The actual message received.
-    #     :return: None
-    #     """
-    #
-    # def receive_packet_out(logical_device_id, egress_port_no, msg):
-    #     """
-    #     Pass a packet_out message content to adapter so that it can forward it
-    #     out to the device. This is only called on root devices.
-    #     :param logical_device_id:
-    #     :param egress_port: egress logical port number
-    #     :param msg: actual message
-    #     :return: None
-    #     """
-    #
-    # def change_master_state(master):
-    #     """
-    #     Called to indicate if plugin shall assume or lose master role. The
-    #     master role can be used to perform functions that must be performed
-    #     from a single point in the cluster. In single-node deployments of
-    #     Voltha, the plugins are always in master role.
-    #     :param master: (bool) True to indicate the mastership needs to be
-    #      assumed; False to indicate that mastership needs to be abandoned.
-    #     :return: (Deferred) which is fired by the adapter when mastership is
-    #      assumed/dropped, respectively.
-    #     """
+    def process_inter_adapter_message(msg):
+        """
+        Called when the adapter receives a message that was sent to it directly
+        from another adapter. An adapter is automatically registered for these
+        messages when creating the inter-container kafka proxy. Note that it is
+        the responsibility of the sending and receiving adapters to properly encode
+        and decode the message.
+        :param msg: Proto Message (any)
+        :return: Proto Message Response
+        """
 
 
-# class IAdapterAgent(Interface):
-#     """
-#     This object is passed in to the __init__ function of each adapter,
-#     and can be used by the adapter implementation to initiate async calls
-#     toward Voltha's CORE via the APIs defined here.
-#     """
-#
-#     def get_device(device_id):
-#         # TODO add doc
-#         """"""
-#
-#     def add_device(device):
-#         # TODO add doc
-#         """"""
-#
-#     def update_device(device):
-#         # TODO add doc
-#         """"""
-#
-#     def add_port(device_id, port):
-#         # TODO add doc
-#         """"""
-#
-#     def create_logical_device(logical_device):
-#         # TODO add doc
-#         """"""
-#
-#     def add_logical_port(logical_device_id, port):
-#         # TODO add doc
-#         """"""
-#
-#     def child_device_detected(parent_device_id,
-#                               parent_port_no,
-#                               child_device_type,
-#                               proxy_address,
-#                               admin_state,
-#                               **kw):
-#         # TODO add doc
-#         """"""
-#
-#     def send_proxied_message(proxy_address, msg):
-#         """
-#         Forward a msg to a child device of device, addressed by the given
-#         proxy_address=Device.ProxyAddress().
-#         :param proxy_address: Address info for the parent device
-#          to route the message to the child device. This was given to the
-#          child device by the parent device at the creation of the child
-#          device.
-#         :param msg: (str) The actual message to send.
-#         :return: (Deferred(None) or None) The return of this method should
-#          indicate that the message was successfully *sent*.
-#         """
-#
-#     def receive_proxied_message(proxy_address, msg):
-#         """
-#         Pass an async message (arrived via a proxy) to this device.
-#         :param proxy_address: Address info for the parent device
-#          to route the message to the child device. This was given to the
-#          child device by the parent device at the creation of the child
-#          device. Note this is the proxy_address with which the adapter
-#          had to register prior to receiving proxied messages.
-#         :param msg: (str) The actual message received.
-#         :return: None
-#         """
-#
-#     def register_for_proxied_messages(proxy_address):
-#         """
-#         A child device adapter can use this to indicate its intent to
-#         receive async messages sent via a parent device. Example: an
-#         ONU adapter can use this to register for OMCI messages received
-#         via the OLT and the OLT adapter.
-#         :param child_device_address: Address info that was given to the
-#          child device by the parent device at the creation of the child
-#          device. Its uniqueness acts as a router information for the
-#          registration.
-#         :return: None
-#         """
-#
-#     def unregister_for_proxied_messages(proxy_address):
-#         """
-#         Cancel a previous registration
-#         :return:
-#         """
-#
-#     def send_packet_in(logical_device_id, logical_port_no, packet):
-#         """
-#         Forward given packet to the northbound toward an SDN controller.
-#         :param device_id: logical device identifier
-#         :param logical_port_no: logical port_no (as numbered in openflow)
-#         :param packet: the actual packet; can be a serialized string or a scapy
-#                        Packet.
-#         :return: None returned on success
-#         """
-#
-#     def submit_kpis(kpi_event_msg):
-#         """
-#         Submit KPI metrics on behalf of the OLT and its adapter. This can
-#         include hardware related metrics, usage and utilization metrics, as
-#         well as optional adapter specific metrics.
-#         :param kpi_event_msg: A protobuf message of KpiEvent type.
-#         :return: None
-#         """
-#
-#     def submit_alarm(device_id, alarm_event_msg):
-#         """
-#         Submit an alarm on behalf of the OLT and its adapter.
-#         :param alarm_event_msg: A protobuf message of AlarmEvent type.
-#         :return: None
-#         """
-#
-#     def register_for_onu_detect_state(proxy_address):
-#         """
-#
-#         :return: None
-#         """
-#
-#     def unregister_for_onu_detect_state(proxy_address):
-#         """
-#
-#         :return: None
-#         """
-#
-#     def forward_onu_detect_state(proxy_address, state):
-#         """
-#         Forward onu detect state to ONU adapter
-#         :param proxy_address: ONU device address
-#         :param state: ONU detect state (bool)
-#         :return: None
-#         """
-
 class ICoreSouthBoundInterface(Interface):
     """
     Represents a Voltha Core. This is used by an adapter to initiate async
@@ -520,7 +329,6 @@
         :return: None
         """
 
-
     def child_device_detected(parent_device_id,
                               parent_port_no,
                               child_device_type,
@@ -649,122 +457,3 @@
         :param packet: The actual packet
          :return: None
         """
-
-    # def add_device(device):
-    #     # TODO add doc
-    #     """"""
-
-    # def update_device(device):
-    #     # TODO add doc
-    #     """"""
-
-    # def add_port(device_id, port):
-    #     # TODO add doc
-    #     """"""
-
-    # def create_logical_device(logical_device):
-    #     # TODO add doc
-    #     """"""
-    #
-    # def add_logical_port(logical_device_id, port):
-    #     # TODO add doc
-    #     """"""
-
-    # def child_device_detected(parent_device_id,
-    #                           parent_port_no,
-    #                           child_device_type,
-    #                           proxy_address,
-    #                           admin_state,
-    #                           **kw):
-    #     # TODO add doc
-    #     """"""
-
-    # def send_proxied_message(proxy_address, msg):
-    #     """
-    #     Forward a msg to a child device of device, addressed by the given
-    #     proxy_address=Device.ProxyAddress().
-    #     :param proxy_address: Address info for the parent device
-    #      to route the message to the child device. This was given to the
-    #      child device by the parent device at the creation of the child
-    #      device.
-    #     :param msg: (str) The actual message to send.
-    #     :return: (Deferred(None) or None) The return of this method should
-    #      indicate that the message was successfully *sent*.
-    #     """
-    #
-    # def receive_proxied_message(proxy_address, msg):
-    #     """
-    #     Pass an async message (arrived via a proxy) to this device.
-    #     :param proxy_address: Address info for the parent device
-    #      to route the message to the child device. This was given to the
-    #      child device by the parent device at the creation of the child
-    #      device. Note this is the proxy_address with which the adapter
-    #      had to register prior to receiving proxied messages.
-    #     :param msg: (str) The actual message received.
-    #     :return: None
-    #     """
-    #
-    # def register_for_proxied_messages(proxy_address):
-    #     """
-    #     A child device adapter can use this to indicate its intent to
-    #     receive async messages sent via a parent device. Example: an
-    #     ONU adapter can use this to register for OMCI messages received
-    #     via the OLT and the OLT adapter.
-    #     :param child_device_address: Address info that was given to the
-    #      child device by the parent device at the creation of the child
-    #      device. Its uniqueness acts as a router information for the
-    #      registration.
-    #     :return: None
-    #     """
-    #
-    # def unregister_for_proxied_messages(proxy_address):
-    #     """
-    #     Cancel a previous registration
-    #     :return:
-    #     """
-    #
-    # def submit_kpis(kpi_event_msg):
-    #     """
-    #     Submit KPI metrics on behalf of the OLT and its adapter. This can
-    #     include hardware related metrics, usage and utilization metrics, as
-    #     well as optional adapter specific metrics.
-    #     :param kpi_event_msg: A protobuf message of KpiEvent type.
-    #     :return: None
-    #     """
-    #
-    # def submit_alarm(device_id, alarm_event_msg):
-    #     """
-    #     Submit an alarm on behalf of the OLT and its adapter.
-    #     :param alarm_event_msg: A protobuf message of AlarmEvent type.
-    #     :return: None
-    #     """
-
-    # def register_for_onu_detect_state(proxy_address):
-    #     """
-    #
-    #     :return: None
-    #     """
-    #
-    # def unregister_for_onu_detect_state(proxy_address):
-    #     """
-    #
-    #     :return: None
-    #     """
-    #
-    # def forward_onu_detect_state(proxy_address, state):
-    #     """
-    #     Forward onu detect state to ONU adapter
-    #     :param proxy_address: ONU device address
-    #     :param state: ONU detect state (bool)
-    #     :return: None
-    #     """
-    #
-    # def send_packet_in(logical_device_id, logical_port_no, packet):
-    #     """
-    #     Forward given packet to the northbound toward an SDN controller.
-    #     :param device_id: logical device identifier
-    #     :param logical_port_no: logical port_no (as numbered in openflow)
-    #     :param packet: the actual packet; can be a serialized string or a
-    #     scapy Packet.
-    #     :return: None returned on success
-    #     """
