diff --git a/db/model/non_persisted_revision.go b/db/model/non_persisted_revision.go
index 765bbaf..27d3d9a 100644
--- a/db/model/non_persisted_revision.go
+++ b/db/model/non_persisted_revision.go
@@ -250,9 +250,9 @@
 	npr.mutex.Lock()
 	defer npr.mutex.Unlock()
 
-	if npr.Config.Data != nil && npr.Config.Data == data {
+	if npr.Config.Data != nil && npr.Config.hashData(npr.Root, data) == npr.Config.Hash {
 		log.Debugw("stored-data-matches-latest", log.Fields{"stored": npr.Config.Data, "provided": data})
-		return nil
+		return npr
 	}
 
 	newRev := NonPersistedRevision{}
@@ -285,10 +285,13 @@
 			existChildMap[child.GetHash()] = i
 		}
 
-		// Identify the revisions that are not present in the existing list and add them
 		for _, newChild := range children {
 			if _, childExists := existChildMap[newChild.GetHash()]; !childExists {
+				// revision is not present in the existing list... add it
 				updatedRev.Children[name] = append(updatedRev.Children[name], newChild)
+			} else {
+				// replace
+				updatedRev.Children[name][existChildMap[newChild.GetHash()]] = newChild
 			}
 		}
 	} else {
diff --git a/db/model/persisted_revision.go b/db/model/persisted_revision.go
index 84b9569..98e80e4 100644
--- a/db/model/persisted_revision.go
+++ b/db/model/persisted_revision.go
@@ -131,7 +131,13 @@
 				if dataPair, err := pr.kvStore.Get(pr.GetHash()); err != nil || dataPair == nil {
 					log.Errorw("update-in-memory--key-retrieval-failed", log.Fields{"key": pr.GetHash(), "error": err})
 				} else {
-					pr.UpdateData(dataPair.Value, pr.GetBranch())
+					data := reflect.New(reflect.TypeOf(pr.GetData()).Elem())
+
+					if err := proto.Unmarshal(dataPair.Value.([]byte), data.Interface().(proto.Message)); err != nil {
+						log.Errorw("update-in-memory--unmarshal-failed", log.Fields{"key": pr.GetHash(), "error": err})
+					} else {
+						pr.UpdateData(data.Interface(), pr.GetBranch())
+					}
 				}
 
 			default:
diff --git a/protos/device.proto b/protos/device.proto
index 902a58c..0770060 100644
--- a/protos/device.proto
+++ b/protos/device.proto
@@ -144,7 +144,7 @@
     uint32 crc = 4;
 
     // Download state
-    ImageDownloadState state = 5;
+    ImageDownloadState download_state = 5;
 
     // Downloaded version
     string image_version = 6;
diff --git a/protos/voltha.proto b/protos/voltha.proto
index faf57a1..fdff7f6 100644
--- a/protos/voltha.proto
+++ b/protos/voltha.proto
@@ -146,7 +146,7 @@
     // Get more information on a given physical device
     rpc UpdateLogLevel(Logging) returns(google.protobuf.Empty) {
         option (google.api.http) = {
-            get: "/api/v1/devices/{id}"
+            get: "/api/v1/logs"
         };
     }
 
diff --git a/python/Makefile b/python/Makefile
index d6ae216..737ae89 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -89,7 +89,7 @@
 
 FETCH_IMAGE_LIST = $(shell echo $(FETCH_BUILD_IMAGE_LIST) $(FETCH_COMPOSE_IMAGE_LIST) $(FETCH_K8S_IMAGE_LIST) | tr ' ' '\n' | sort -u)
 
-.PHONY: $(DIRS) $(DIRS_CLEAN) $(DIRS_FLAKE8) flake8 base openolt ponsim_olt ponsim_onu protos cli kafka common start stop tag push pull
+.PHONY: $(DIRS) $(DIRS_CLEAN) $(DIRS_FLAKE8) flake8 base openolt ponsim_olt ponsim_onu protos cli ofagent kafka common start stop tag push pull
 
 # This should to be the first and default target in this Makefile
 help:
@@ -111,6 +111,7 @@
 	@echo "adapter_ponsim_olt       : Build the ponsim olt adapter docker container"
 	@echo "adapter_ponsim_onu       : Build the ponsim olt adapter docker container"
 	@echo "adapter_openolt       : Build the openolt adapter docker container"
+	@echo "ofagent      : Build the openolt adapter docker container"
 	@echo "tag          : Tag a set of images"
 	@echo "push         : Push the docker images to an external repository"
 	@echo "pull         : Pull the docker images from a repository"
@@ -145,7 +146,7 @@
 
 build: protoc protos containers
 
-containers: base adapter_ponsim_olt adapter_ponsim_onu adapter_openolt
+containers: base adapter_ponsim_olt adapter_ponsim_onu adapter_openolt ofagent
 
 base:
 	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}voltha-base:${TAG} -f docker/Dockerfile.base .
@@ -155,9 +156,13 @@
 
 adapter_openolt:
 	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}voltha-adapter-openolt:${TAG} -f docker/Dockerfile.adapter_openolt .
+
 adapter_ponsim_onu:
 	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}voltha-adapter-ponsim-onu:${TAG} -f docker/Dockerfile.adapter_ponsim_onu .
 
+ofagent:
+	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}voltha-ofagent:${TAG} -f docker/Dockerfile.ofagent .
+
 cli:
 	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}voltha-cli:${TAG} -f docker/Dockerfile.cli .
 
diff --git a/rw_core/core/device_agent.go b/rw_core/core/device_agent.go
index b50ca94..31720c1 100644
--- a/rw_core/core/device_agent.go
+++ b/rw_core/core/device_agent.go
@@ -316,7 +316,7 @@
 		}
 		// Save the image
 		clonedImg := proto.Clone(img).(*voltha.ImageDownload)
-		clonedImg.State = voltha.ImageDownload_DOWNLOAD_REQUESTED
+		clonedImg.DownloadState = voltha.ImageDownload_DOWNLOAD_REQUESTED
 		cloned := proto.Clone(device).(*voltha.Device)
 		if cloned.ImageDownloads == nil {
 			cloned.ImageDownloads = []*voltha.ImageDownload{clonedImg}
@@ -363,7 +363,7 @@
 		cloned := proto.Clone(device).(*voltha.Device)
 		for _, image := range cloned.ImageDownloads {
 			if image.Id == img.Id && image.Name == img.Name {
-				image.State = voltha.ImageDownload_DOWNLOAD_CANCELLED
+				image.DownloadState = voltha.ImageDownload_DOWNLOAD_CANCELLED
 			}
 		}
 
@@ -488,15 +488,15 @@
 		clonedImages := make([]*voltha.ImageDownload, len(cloned.ImageDownloads))
 		for _, image := range cloned.ImageDownloads {
 			if image.Id == img.Id && image.Name == img.Name {
-				if image.State != voltha.ImageDownload_DOWNLOAD_CANCELLED {
+				if image.DownloadState != voltha.ImageDownload_DOWNLOAD_CANCELLED {
 					clonedImages = append(clonedImages, img)
 				}
 			}
 		}
 		cloned.ImageDownloads = clonedImages
 		// Set the Admin state to enabled if required
-		if (img.State != voltha.ImageDownload_DOWNLOAD_REQUESTED &&
-			img.State != voltha.ImageDownload_DOWNLOAD_STARTED) ||
+		if (img.DownloadState != voltha.ImageDownload_DOWNLOAD_REQUESTED &&
+			img.DownloadState != voltha.ImageDownload_DOWNLOAD_STARTED) ||
 			(img.ImageState != voltha.ImageDownload_IMAGE_ACTIVATING){
 			cloned.AdminState = voltha.AdminState_ENABLED
 		}
diff --git a/rw_core/core/grpc_nbi_api_handler.go b/rw_core/core/grpc_nbi_api_handler.go
index 4d88459..c65178d 100644
--- a/rw_core/core/grpc_nbi_api_handler.go
+++ b/rw_core/core/grpc_nbi_api_handler.go
@@ -521,11 +521,11 @@
 func (handler *APIHandler) GetImageDownloadStatus(ctx context.Context, img *voltha.ImageDownload) (*voltha.ImageDownload, error) {
 	log.Debugw("getImageDownloadStatus-request", log.Fields{"img": *img})
 	if isTestMode(ctx) {
-		resp := &voltha.ImageDownload{State: voltha.ImageDownload_DOWNLOAD_SUCCEEDED}
+		resp := &voltha.ImageDownload{DownloadState: voltha.ImageDownload_DOWNLOAD_SUCCEEDED}
 		return resp, nil
 	}
 
-	failedresponse := &voltha.ImageDownload{State: voltha.ImageDownload_DOWNLOAD_UNKNOWN}
+	failedresponse := &voltha.ImageDownload{DownloadState: voltha.ImageDownload_DOWNLOAD_UNKNOWN}
 
 	if handler.competeForTransaction() {
 		if txn, err := handler.acquireTransaction(ctx); err != nil {
@@ -560,12 +560,12 @@
 func (handler *APIHandler) GetImageDownload(ctx context.Context, img *voltha.ImageDownload) (*voltha.ImageDownload, error) {
 	log.Debugw("GetImageDownload-request", log.Fields{"img": *img})
 	if isTestMode(ctx) {
-		resp := &voltha.ImageDownload{State: voltha.ImageDownload_DOWNLOAD_SUCCEEDED}
+		resp := &voltha.ImageDownload{DownloadState: voltha.ImageDownload_DOWNLOAD_SUCCEEDED}
 		return resp, nil
 	}
 
 	if download, err := handler.deviceMgr.getImageDownload(ctx, img); err != nil {
-		return &voltha.ImageDownload{State: voltha.ImageDownload_DOWNLOAD_UNKNOWN}, err
+		return &voltha.ImageDownload{DownloadState: voltha.ImageDownload_DOWNLOAD_UNKNOWN}, err
 	} else {
 		return download, nil
 	}
@@ -581,7 +581,7 @@
 	if downloads, err := handler.deviceMgr.listImageDownloads(ctx, id.Id); err != nil {
 		failedResp := &voltha.ImageDownloads{
 			Items:[]*voltha.ImageDownload{
-				&voltha.ImageDownload{State: voltha.ImageDownload_DOWNLOAD_UNKNOWN},
+				&voltha.ImageDownload{DownloadState: voltha.ImageDownload_DOWNLOAD_UNKNOWN},
 		},
 		}
 		return failedResp, err
