diff --git a/ponsim/grpc_server.py b/ponsim/grpc_server.py
index 13d0ab9..85f12f6 100644
--- a/ponsim/grpc_server.py
+++ b/ponsim/grpc_server.py
@@ -19,6 +19,11 @@
 from concurrent import futures
 
 from voltha.protos import third_party
+from voltha.protos.ponsim_pb2 import add_PonSimServicer_to_server
+from voltha.protos.ponsim_pb2 import add_XPonSimServicer_to_server
+from voltha.adapters.asfvolt16_olt.protos.bal_pb2 import add_BalServicer_to_server
+from ponsim_servicer import FlowUpdateHandler, XPonHandler
+from bal_servicer import BalHandler
 
 _ = third_party
 
@@ -26,23 +31,23 @@
 
 class GrpcServer(object):
 
-    def __init__(self, port, ponsim, x_pon_sim):
+    def __init__(self, port, ponsim, x_pon_sim, device_type):
         self.port = port
         self.thread_pool = futures.ThreadPoolExecutor(max_workers=10)
         self.server = grpc.server(self.thread_pool)
         self.ponsim = ponsim
         self.x_pon_sim = x_pon_sim
+        self.device_type = device_type
 
-    '''
-    service_list: a list of (add_xyzSimServicer_to_server, xyzServicerClass)
-    e.g. [(add_PonSimServicer_to_server, FlowUpdateHandler),
-          (add_XPonSimServicer_to_server, XPonHandler)]
-    '''
-    def start(self, service_list):
-        log.debug('starting')
-        for add_x_to_server, xServiceClass in service_list:
-            x_handler = xServiceClass(self.thread_pool, self.ponsim)
-            add_x_to_server(x_handler, self.server)
+    def start(self):
+        if self.device_type == 'ponsim':
+            handler = FlowUpdateHandler(self.thread_pool, self.ponsim)
+            add_PonSimServicer_to_server(handler, self.server)
+            x_pon_handler = XPonHandler(self.thread_pool, self.x_pon_sim)
+            add_XPonSimServicer_to_server(x_pon_handler, self.server)
+        else:
+            handler = BalHandler(self.thread_pool, self.ponsim)
+            add_BalServicer_to_server(handler, self.server)
 
         # read in key and certificate
         try:
diff --git a/ponsim/main.py b/ponsim/main.py
index 63b47f6..09f78a5 100755
--- a/ponsim/main.py
+++ b/ponsim/main.py
@@ -29,11 +29,6 @@
 from common.structlog_setup import setup_logging
 from grpc_server import GrpcServer
 from realio import RealIo
-from voltha.protos.ponsim_pb2 import add_PonSimServicer_to_server
-from voltha.protos.ponsim_pb2 import add_XPonSimServicer_to_server
-from voltha.adapters.asfvolt16_olt.protos.bal_pb2 import add_BalServicer_to_server
-import ponsim_servicer
-import bal_servicer
 from ponsim import PonSim
 from ponsim import XPonSim
 
@@ -174,6 +169,8 @@
         self.ponsim = None
         self.x_pon_sim = None
         self.grpc_server = None
+        self.grpc_services = None
+        self.device_type = args.device_type
 
         self.alarm_config = dict()
         self.alarm_config['simulation'] = self.args.alarm_simulation
@@ -182,19 +179,13 @@
         if not args.no_banner:
             print_banner(self.log)
 
-        if args.device_type == 'ponsim':
-            grpc_services =  [(add_PonSimServicer_to_server, ponsim_servicer.FlowUpdateHandler)]
-        elif args.device_type == 'bal':
-            grpc_services =  [(add_BalServicer_to_server, bal_servicer.BalHandler)]
-        grpc_services.append((add_XPonSimServicer_to_server, ponsim_servicer.XPonHandler))
-
-        self.startup_components(grpc_services)
+        self.startup_components()
 
     def start(self):
         self.start_reactor()  # will not return except Keyboard interrupt
 
     @inlineCallbacks
-    def startup_components(self, grpc_services):
+    def startup_components(self):
         try:
             self.log.info('starting-internal-components')
 
@@ -206,8 +197,11 @@
 
             self.x_pon_sim = XPonSim()
 
-            self.grpc_server = GrpcServer(self.args.grpc_port, self.ponsim, self.x_pon_sim)
-            yield self.grpc_server.start(grpc_services)
+            self.grpc_server = GrpcServer(self.args.grpc_port,
+                                          self.ponsim,
+                                          self.x_pon_sim,
+                                          self.device_type)
+            yield self.grpc_server.start()
 
             self.log.info('started-internal-services')
 
