diff --git a/python/adapters/ponsim_olt/main.py b/python/adapters/ponsim_olt/main.py
index e3c5b7f..5a49184 100755
--- a/python/adapters/ponsim_olt/main.py
+++ b/python/adapters/ponsim_olt/main.py
@@ -29,24 +29,21 @@
 from twisted.internet.task import LoopingCall
 from zope.interface import implementer
 
-from python.common.structlog_setup import setup_logging, update_logging
-from python.common.utils.asleep import asleep
-from python.common.utils.deferred_utils import TimeOutError
-from python.common.utils.dockerhelpers import get_my_containers_name
-from python.common.utils.nethelpers import get_my_primary_local_ipv4, \
+from pyvoltha.common.structlog_setup import setup_logging, update_logging
+from pyvoltha.common.utils.asleep import asleep
+from pyvoltha.common.utils.deferred_utils import TimeOutError
+from pyvoltha.common.utils.dockerhelpers import get_my_containers_name
+from pyvoltha.common.utils.nethelpers import get_my_primary_local_ipv4, \
     get_my_primary_interface
-from python.common.utils.registry import registry, IComponent
-from python.adapters.kafka.adapter_proxy import AdapterProxy
-from python.adapters.kafka.adapter_request_facade import AdapterRequestFacade
-from python.adapters.kafka.core_proxy import CoreProxy
-from python.adapters.kafka.kafka_inter_container_library import IKafkaMessagingProxy, \
+from pyvoltha.common.utils.registry import registry, IComponent
+from pyvoltha.adapters.kafka.adapter_proxy import AdapterProxy
+from pyvoltha.adapters.kafka.adapter_request_facade import AdapterRequestFacade
+from pyvoltha.adapters.kafka.core_proxy import CoreProxy
+from pyvoltha.adapters.kafka.kafka_inter_container_library import IKafkaMessagingProxy, \
     get_messaging_proxy
-from python.adapters.kafka.kafka_proxy import KafkaProxy, get_kafka_proxy
+from pyvoltha.adapters.kafka.kafka_proxy import KafkaProxy, get_kafka_proxy
 from ponsim_olt import PonSimOltAdapter
-from python.protos import third_party
-from python.protos.adapter_pb2 import AdapterConfig
-
-_ = third_party
+from voltha_protos.adapter_pb2 import AdapterConfig
 
 defs = dict(
     version_file='./VERSION',
diff --git a/python/adapters/ponsim_olt/ponsim_olt.py b/python/adapters/ponsim_olt/ponsim_olt.py
index 42a36c1..c99fcac 100644
--- a/python/adapters/ponsim_olt/ponsim_olt.py
+++ b/python/adapters/ponsim_olt/ponsim_olt.py
@@ -33,27 +33,25 @@
 from twisted.internet.defer import inlineCallbacks, returnValue
 from twisted.internet.task import LoopingCall
 
-from python.adapters.common.frameio.frameio import BpfProgramFilter, hexify
-from python.common.utils.asleep import asleep
-from python.common.utils.registry import registry
-from python.adapters.iadapter import OltAdapter
-from python.adapters.kafka.kafka_proxy import get_kafka_proxy
-from python.protos import ponsim_pb2
-from python.protos import third_party
-from python.protos.common_pb2 import OperStatus, ConnectStatus
-from python.protos.inter_container_pb2 import SwitchCapability, PortCapability, \
+from pyvoltha.adapters.common.frameio.frameio import BpfProgramFilter, hexify
+from pyvoltha.common.utils.asleep import asleep
+from pyvoltha.common.utils.registry import registry
+from pyvoltha.adapters.iadapter import OltAdapter
+from pyvoltha.adapters.kafka.kafka_proxy import get_kafka_proxy
+from voltha_protos.ponsim_pb2_grpc import PonSimStub
+from voltha_protos.common_pb2 import OperStatus, ConnectStatus
+from voltha_protos.inter_container_pb2 import SwitchCapability, PortCapability, \
     InterAdapterMessageType, InterAdapterResponseBody
-from python.protos.device_pb2 import Port, PmConfig, PmConfigs
-from python.protos.events_pb2 import KpiEvent, KpiEventType, MetricValuePairs
-from python.protos.logical_device_pb2 import LogicalPort
-from python.protos.openflow_13_pb2 import OFPPS_LIVE, OFPPF_FIBER, \
+from voltha_protos.device_pb2 import Port, PmConfig, PmConfigs
+from voltha_protos.events_pb2 import KpiEvent, KpiEventType, MetricValuePairs
+from voltha_protos.logical_device_pb2 import LogicalPort
+from voltha_protos.openflow_13_pb2 import OFPPS_LIVE, OFPPF_FIBER, \
     OFPPF_1GB_FD, \
     OFPC_GROUP_STATS, OFPC_PORT_STATS, OFPC_TABLE_STATS, OFPC_FLOW_STATS, \
     ofp_switch_features, ofp_desc
-from python.protos.openflow_13_pb2 import ofp_port
-from python.protos.ponsim_pb2 import FlowTable, PonSimFrame, PonSimMetricsRequest
+from voltha_protos.openflow_13_pb2 import ofp_port
+from voltha_protos.ponsim_pb2 import FlowTable, PonSimFrame, PonSimMetricsRequest
 
-_ = third_party
 log = structlog.get_logger()
 
 PACKET_IN_VLAN = 4000
@@ -116,7 +114,7 @@
 
     def collect_port_metrics(self, channel):
         rtrn_port_metrics = dict()
-        stub = ponsim_pb2.PonSimStub(channel)
+        stub = PonSimStub(channel)
         stats = stub.GetStats(Empty())
         rtrn_port_metrics['pon'] = self.extract_pon_metrics(stats)
         rtrn_port_metrics['nni'] = self.extract_nni_metrics(stats)
@@ -249,7 +247,7 @@
                 return
 
             yield self.get_channel()
-            stub = ponsim_pb2.PonSimStub(self.channel)
+            stub = PonSimStub(self.channel)
             info = stub.GetDeviceInfo(Empty())
             log.info('got-info', info=info, device_id=device.id)
             self.ofp_port_no = info.nni_port
@@ -388,8 +386,7 @@
         This call establishes a GRPC stream to receive frames.
         """
         yield self.get_channel()
-        stub = ponsim_pb2.PonSimStub(self.channel)
-        # stub = ponsim_pb2.PonSimStub(self.get_channel())
+        stub = PonSimStub(self.channel)
 
         # Attempt to establish a grpc stream with the remote ponsim service
         self.frames = stub.ReceiveFrames(Empty())
@@ -410,7 +407,7 @@
     @inlineCallbacks
     def update_flow_table(self, flows):
         yield self.get_channel()
-        stub = ponsim_pb2.PonSimStub(self.channel)
+        stub = PonSimStub(self.channel)
 
         self.log.info('pushing-olt-flow-table')
         stub.UpdateFlowTable(FlowTable(
@@ -439,7 +436,7 @@
     def send_proxied_message(self, proxy_address, msg):
         self.log.info('sending-proxied-message')
         if isinstance(msg, FlowTable):
-            stub = ponsim_pb2.PonSimStub(self.get_channel())
+            stub = PonSimStub(self.get_channel())
             self.log.info('pushing-onu-flow-table', port=msg.port)
             res = stub.UpdateFlowTable(msg)
             self.core_proxy.receive_proxied_message(proxy_address, res)
@@ -452,7 +449,7 @@
                 f = FlowTable()
                 if request.body:
                     request.body.Unpack(f)
-                    stub = ponsim_pb2.PonSimStub(self.channel)
+                    stub = PonSimStub(self.channel)
                     self.log.info('pushing-onu-flow-table')
                     res = stub.UpdateFlowTable(f)
                     # Send response back
@@ -471,7 +468,7 @@
                 m = PonSimMetricsRequest()
                 if request.body:
                     request.body.Unpack(m)
-                    stub = ponsim_pb2.PonSimStub(self.channel)
+                    stub = PonSimStub(self.channel)
                     self.log.info('proxying onu stats request', port=m.port)
                     res = stub.GetStats(m)
                     # Send response back
@@ -508,7 +505,7 @@
             out_port = self.nni_port.port_no if egress_port == self.nni_port.port_no else 1
 
             # send over grpc stream
-            stub = ponsim_pb2.PonSimStub(self.channel)
+            stub = PonSimStub(self.channel)
             frame = PonSimFrame(id=self.device_id, payload=str(out_pkt),
                                 out_port=out_port)
             stub.SendFrame(frame)
@@ -581,7 +578,7 @@
         # process if the device was in DISABLED state on voltha restart
         if not self.ofp_port_no and not self.nni_port:
             yield self.get_channel()
-            stub = ponsim_pb2.PonSimStub(self.channel)
+            stub = PonSimStub(self.channel)
             info = stub.GetDeviceInfo(Empty())
             log.info('got-info', info=info)
             self.ofp_port_no = info.nni_port
