diff --git a/Makefile b/Makefile
index 3583c94..4704796 100644
--- a/Makefile
+++ b/Makefile
@@ -86,10 +86,10 @@
 	docker build $(DOCKER_BUILD_ARGS) -t base:latest -f docker/Dockerfile.base .
 
 afrouter:
-	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}arouter:${TAG} -f docker/Dockerfile.arouter .
+	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}afrouter:${TAG} -f docker/Dockerfile.arouter .
 
 arouterd:
-	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}arouterd:${TAG} -f docker/Dockerfile.arouterd .
+	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}afrouterd:${TAG} -f docker/Dockerfile.arouterd .
 
 rw_core:
 	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}voltha-rw-core:${TAG} -f docker/Dockerfile.rw_core .
diff --git a/arouterd/arouterd.go b/arouterd/arouterd.go
index 0ea0b49..06f4628 100644
--- a/arouterd/arouterd.go
+++ b/arouterd/arouterd.go
@@ -671,23 +671,44 @@
 	}
 }
 
+func getBackendForCore(coreId string, coreGroups [][]*rwPod) string {
+	for _,v := range(coreGroups) {
+		for _,v2 := range(v) {
+			if v2.name == coreId {
+				return v2.backend
+			}
+		}
+	}
+	log.Errorf("No backend found for core %s\n", coreId)
+	return ""
+}
+
 func monitorDiscovery(client pb.ConfigurationClient,
-						ch <-chan *ic.InterContainerMessage) {
+						ch <-chan *ic.InterContainerMessage,
+						coreGroups [][]*rwPod) {
+	var id map[string]struct{} = make(map[string]struct{})
+
 	select {
 	case msg := <-ch:
 		log.Debugf("Received a device discovery notification")
-		_ = msg
-		requestBody := &ic.InterContainerRequestBody{}
-		if err := ptypes.UnmarshalAny(msg.Body, requestBody); err != nil {
+		device := &ic.DeviceDiscovered{}
+		if err := ptypes.UnmarshalAny(msg.Body, device); err != nil {
 			log.Errorf("Could not unmarshal received notification %v", msg)
 		} else {
-			// Do something with the message here
+			// Set the affinity of the discovered device.
+			if be := getBackendForCore(device.Id, coreGroups); be != "" {
+				id[device.Id]=struct{}{}
+				setAffinity(client, id, be)
+			} else {
+				log.Error("Cant use an empty string as a backend name")
+			}
 		}
 		break
 	}
 }
 
-func startDiscoveryMonitor(client pb.ConfigurationClient) error {
+func startDiscoveryMonitor(client pb.ConfigurationClient,
+							coreGroups [][]*rwPod) error {
 	var ch <-chan *ic.InterContainerMessage
 	// Connect to kafka for discovery events
 	topic := &kafka.Topic{Name: "AffinityRouter"}
@@ -698,7 +719,7 @@
 		log.Error("Could not subscribe to the 'AffinityRouter' channel, discovery disabled")
 		return err
 	}
-	go monitorDiscovery(client, ch)
+	go monitorDiscovery(client, ch, coreGroups)
 	return nil
 }
 
@@ -816,7 +837,7 @@
 	}
 
 	log.Debug("Starting discovery monitoring")
-	startDiscoveryMonitor(client)
+	startDiscoveryMonitor(client, coreGroups)
 
 	log.Debugf("Starting core monitoring")
 	startCoreMonitor(client, clientset, coreFltr, coreGroups) // Never returns
diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base
index 0a37a23..3e6098c 100644
--- a/docker/Dockerfile.base
+++ b/docker/Dockerfile.base
@@ -13,6 +13,7 @@
 RUN ["mkdir", "-p", "/src", "src/protos"]
 RUN ["mkdir", "-p", "$GOPATH/src", "$GOPATH/pkg", "$GOPATH/bin"]
 RUN ["mkdir", "-p", "$GOPATH/src/github.com/opencord/voltha/protos/go"]
+RUN ["mkdir", "-p", "/share"]
 
 # Install golang protobuf
 #RUN go get github.com/golang/protobuf/protoc-gen-go
@@ -49,26 +50,4 @@
 # Compile protobuf files
 RUN sh /src/protos/build_protos.sh /src/protos
 
-# Build rw_core
-#RUN cd afrouter && go build -o /src/afrouter
-
-
-# -------------
-# Image creation stage
-
-#FROM alpine:3.6
-
-# Set the working directory
-#WORKDIR /app
-
-# Copy required files
-#COPY --from=build-env /src/afrouter /app/
-#COPY --from=build-env /src/arouter.json /app/
-#COPY --from=build-env /src/protos/voltha.pb /app/
-#WORKDIR config
-#WORKDIR /app
-
-#CMD cd /app && ./arouter -config config/arouter.voltha2.json
-
-# Set the config volume
-
+VOLUME /share
