diff --git a/Makefile b/Makefile
index 3ece56c..055094b 100644
--- a/Makefile
+++ b/Makefile
@@ -22,7 +22,7 @@
 
 VENVDIR := venv-$(shell uname -s | tr '[:upper:]' '[:lower:]')
 
-.PHONY: $(DIRS) $(DIRS_CLEAN) $(DIRS_FLAKE8) flake8
+.PHONY: $(DIRS) $(DIRS_CLEAN) $(DIRS_FLAKE8) flake8 docker-base voltha chameleon ofagent podder netconf shovel onos
 
 default: build
 
@@ -100,7 +100,7 @@
 	docker build -t cord/shovel -f docker/Dockerfile.shovel .
 
 onos:
-	docker build -t cord/onos -f docker/Dockerfile.onos .
+	docker build -t cord/onos -f docker/Dockerfile.onos docker
 
 protos:
 	make -C voltha/protos
diff --git a/compose/docker-compose-system-test.yml b/compose/docker-compose-system-test.yml
index 028cbcb..d8a2433 100644
--- a/compose/docker-compose-system-test.yml
+++ b/compose/docker-compose-system-test.yml
@@ -70,14 +70,6 @@
     environment:
       SERVICE_24224_NAME: "fluentd-intake"
 
-  #
-  # Podder service instance
-  #
-  podder:
-    image: cord/podder
-    volumes:
-    - "/var/run/docker.sock:/tmp/docker.sock"
-    restart: unless-stopped
 
   #
   # Graphite-Grafana-statsd service instance
diff --git a/ofagent/grpc_client.py b/ofagent/grpc_client.py
index 75c48ce..d1b78bd 100644
--- a/ofagent/grpc_client.py
+++ b/ofagent/grpc_client.py
@@ -85,19 +85,13 @@
 
         def receive_packet_in_stream():
             streaming_rpc_method = self.local_stub.ReceivePacketsIn
-            iterator = streaming_rpc_method(empty_pb2.Empty(), timeout=1.0)
-            while not self.stopped:
-                try:
-                    for packet_in in iterator:
-                        reactor.callFromThread(self.packet_in_queue.put,
-                                               packet_in)
-                        log.debug('enqued-packet-in',
-                                  packet_in=packet_in,
-                                  queue_len=len(self.packet_in_queue.pending))
-                except _Rendezvous, e:
-                    if e.code() == StatusCode.DEADLINE_EXCEEDED:
-                        continue
-                    raise
+            iterator = streaming_rpc_method(empty_pb2.Empty())
+            for packet_in in iterator:
+                reactor.callFromThread(self.packet_in_queue.put,
+                                       packet_in)
+                log.debug('enqued-packet-in',
+                          packet_in=packet_in,
+                          queue_len=len(self.packet_in_queue.pending))
 
         reactor.callInThread(receive_packet_in_stream)
 
@@ -105,18 +99,12 @@
 
         def receive_change_events():
             streaming_rpc_method = self.local_stub.ReceiveChangeEvents
-            iterator = streaming_rpc_method(empty_pb2.Empty(), timeout=1.0)
-            while not self.stopped:
-                try:
-                    for event in iterator:
-                        reactor.callFromThread(self.change_event_queue.put, event)
-                        log.debug('enqued-change-event',
-                                  change_event=event,
-                                  queue_len=len(self.change_event_queue.pending))
-                except _Rendezvous, e:
-                    if e.code() == StatusCode.DEADLINE_EXCEEDED:
-                        continue
-                    raise
+            iterator = streaming_rpc_method(empty_pb2.Empty())
+            for event in iterator:
+                reactor.callFromThread(self.change_event_queue.put, event)
+                log.debug('enqued-change-event',
+                          change_event=event,
+                          queue_len=len(self.change_event_queue.pending))
 
         reactor.callInThread(receive_change_events)
 
