diff --git a/adapters/ponsim_olt/main.py b/adapters/ponsim_olt/main.py
index c9ad9d0..569e284 100755
--- a/adapters/ponsim_olt/main.py
+++ b/adapters/ponsim_olt/main.py
@@ -44,7 +44,7 @@
 from adapters.kafka.kafka_proxy import KafkaProxy, get_kafka_proxy
 from adapters.ponsim_olt.ponsim_olt import PonSimOltAdapter
 from adapters.protos import third_party
-from adapters.protos.adapter_pb2 import AdapterConfig, Adapter
+from adapters.protos.adapter_pb2 import AdapterConfig
 
 _ = third_party
 
@@ -284,6 +284,7 @@
         if not args.no_banner:
             print_banner(self.log)
 
+        self.adapter = None
         # Create a unique instance id using the passed-in instance id and
         # UTC timestamp
         current_time = arrow.utcnow().timestamp
@@ -366,10 +367,11 @@
                 core_topic=self.core_topic,
                 my_listening_topic=self.listening_topic)
 
-            ponsim_olt_adapter = PonSimOltAdapter(
-                core_proxy=self.core_proxy, adapter_proxy=self.adapter_proxy, config=config)
-            ponsim_request_handler = AdapterRequestFacade(
-                adapter=ponsim_olt_adapter)
+            self.adapter = PonSimOltAdapter(core_proxy=self.core_proxy,
+                                            adapter_proxy=self.adapter_proxy,
+                                            config=config)
+
+            ponsim_request_handler = AdapterRequestFacade(adapter=self.adapter)
 
             yield registry.register(
                 'kafka_adapter_proxy',
@@ -423,15 +425,14 @@
 
     @inlineCallbacks
     def _register_with_core(self, retries):
-        # Send registration to Core with adapter specs
-        adapter = Adapter()
-        adapter.id =  self.args.name
-        adapter.vendor = self.args.name
-        adapter.version = self.ponsim_olt_adapter_version
         while 1:
             try:
-                resp = yield self.core_proxy.register(adapter)
-                self.log.info('registration-response', response=resp)
+                resp = yield self.core_proxy.register(
+                    self.adapter.adapter_descriptor(),
+                    self.adapter.device_types())
+                if resp:
+                    self.log.info('registered-with-core',
+                                  coreId=resp.instance_id)
                 returnValue(resp)
             except TimeOutError as e:
                 self.log.warn("timeout-when-registering-with-core", e=e)
diff --git a/adapters/ponsim_olt/ponsim_olt.py b/adapters/ponsim_olt/ponsim_olt.py
index 88c6b4d..52fb63b 100644
--- a/adapters/ponsim_olt/ponsim_olt.py
+++ b/adapters/ponsim_olt/ponsim_olt.py
@@ -49,7 +49,7 @@
     OFPC_GROUP_STATS, OFPC_PORT_STATS, OFPC_TABLE_STATS, OFPC_FLOW_STATS, \
     ofp_switch_features, ofp_desc
 from adapters.protos.openflow_13_pb2 import ofp_port
-from adapters.protos.ponsim_pb2 import FlowTable, PonSimFrame
+from adapters.protos.ponsim_pb2 import FlowTable, PonSimFrame, PonSimMetricsRequest
 
 _ = third_party
 log = structlog.get_logger()
@@ -454,7 +454,7 @@
                     res = stub.UpdateFlowTable(f)
                     # Send response back
                     reply = InterAdapterResponseBody()
-                    reply.success = True
+                    reply.status = True
                     self.log.info('sending-response-back', reply=reply)
                     yield self.adapter_proxy.send_inter_adapter_message(
                         msg=reply,
@@ -462,7 +462,27 @@
                         from_adapter=self.adapter.name,
                         to_adapter=request.header.from_topic,
                         to_device_id=request.header.to_device_id,
-                        message_no=request.header.id
+                        message_id=request.header.id
+                    )
+            elif request.header.type == InterAdapterMessageType.METRICS_REQUEST:
+                m = PonSimMetricsRequest()
+                if request.body:
+                    request.body.Unpack(m)
+                    stub = ponsim_pb2.PonSimStub(self.channel)
+                    self.log.info('proxying onu stats request', port=m.port)
+                    res = stub.GetStats(m)
+                    # Send response back
+                    reply = InterAdapterResponseBody()
+                    reply.status = True
+                    reply.body.Pack(res)
+                    self.log.info('sending-response-back', reply=reply)
+                    yield self.adapter_proxy.send_inter_adapter_message(
+                        msg=reply,
+                        type=InterAdapterMessageType.METRICS_RESPONSE,
+                        from_adapter=self.adapter.name,
+                        to_adapter=request.header.from_topic,
+                        to_device_id=request.header.to_device_id,
+                        message_id=request.header.id
                     )
         except Exception as e:
             self.log.exception("error-processing-inter-adapter-message", e=e)
@@ -538,6 +558,8 @@
         self.close_channel()
         self.log.info('disabled-grpc-channel')
 
+        self.stop_kpi_collection()
+
         # TODO:
         # 1) Remove all flows from the device
         # 2) Remove the device from ponsim
@@ -624,7 +646,7 @@
                     }
                 )
 
-                # Step 3: submit directlt to kafka bus
+                # Step 3: submit directly to the kafka bus
                 if kafka_cluster_proxy:
                     if isinstance(kpi_event, Message):
                         kpi_event = dumps(MessageToDict(kpi_event, True, True))
