[VOL-4371]  Voltha protos cleanup

Details can be found at:
https://docs.google.com/document/d/1UzfuiPzxYYTULyERk8nKfgzW9QAnwEdtfw_J4UoFyYo/edit

Change-Id: Iad2efddf306234e282af5d518fd435a6b50b1c41
diff --git a/protos/voltha_protos/adapter.proto b/protos/voltha_protos/adapter.proto
index 3b13266..cb4b9f9 100755
--- a/protos/voltha_protos/adapter.proto
+++ b/protos/voltha_protos/adapter.proto
@@ -1,13 +1,11 @@
 syntax = "proto3";
 
 option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
-option java_package = "org.opencord.voltha";
+option java_package = "org.opencord.voltha.adapter";
 option java_outer_classname = "VolthaAdapter";
 
-package voltha;
+package adapter;
 
-
-import "voltha_protos/meta.proto";
 import "google/protobuf/any.proto";
 
 message AdapterConfig {
@@ -22,15 +20,15 @@
 
     // the adapter ID has to be unique,
     // it will be generated as Type + CurrentReplica
-    string id = 1 [(access) = READ_ONLY];
-    string vendor = 2 [(access) = READ_ONLY];
-    string version = 3 [(access) = READ_ONLY];
+    string id = 1;
+    string vendor = 2;
+    string version = 3;
 
     // Adapter configuration
     AdapterConfig config = 16;
 
     // Custom descriptors and custom configuration
-    google.protobuf.Any additional_description = 64 [(access) = READ_ONLY];
+    google.protobuf.Any additional_description = 64;
 
     repeated string logical_device_ids = 4;  // Logical devices "owned"
 
diff --git a/protos/voltha_protos/adapter_service.proto b/protos/voltha_protos/adapter_service.proto
new file mode 100755
index 0000000..5ff553e
--- /dev/null
+++ b/protos/voltha_protos/adapter_service.proto
@@ -0,0 +1,88 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/adapter_service";
+option java_package = "org.opencord.voltha.adapter_service";
+option java_outer_classname = "VolthaAdapterService";
+
+package adapter_service;
+
+import "google/protobuf/empty.proto";
+import "voltha_protos/common.proto";
+import "voltha_protos/core_adapter.proto";
+import "voltha_protos/device.proto";
+import "voltha_protos/extensions.proto";
+import "voltha_protos/health.proto";
+import "voltha_protos/voltha.proto";
+import "voltha_protos/omci_test.proto";
+import "voltha_protos/events.proto";
+
+// AdapterService is a gRPC service to serve requests from Voltha RW_Core.
+service AdapterService {
+    // GetHealthStatus is used by an AdapterService client to verify connectivity
+    // to the gRPC server hosting the AdapterService service
+    rpc GetHealthStatus(google.protobuf.Empty) returns (health.HealthStatus);
+
+    // Device
+    rpc AdoptDevice(device.Device) returns(google.protobuf.Empty);
+    rpc ReconcileDevice(device.Device) returns(google.protobuf.Empty);
+    rpc DeleteDevice(device.Device) returns(google.protobuf.Empty);
+    rpc DisableDevice(device.Device) returns(google.protobuf.Empty);
+    rpc ReEnableDevice(device.Device) returns(google.protobuf.Empty);
+    rpc RebootDevice(device.Device) returns(google.protobuf.Empty);
+    rpc SelfTestDevice(device.Device) returns(google.protobuf.Empty);
+    rpc GetOfpDeviceInfo(device.Device) returns(core_adapter.SwitchCapability);
+    rpc ChildDeviceLost(device.Device) returns(google.protobuf.Empty);
+
+    // Ports
+    rpc EnablePort(device.Port) returns(google.protobuf.Empty);
+    rpc DisablePort(device.Port) returns(google.protobuf.Empty);
+
+    // Flows
+    rpc UpdateFlowsBulk(core_adapter.BulkFlows) returns(google.protobuf.Empty);
+    rpc UpdateFlowsIncrementally(core_adapter.IncrementalFlows) returns(google.protobuf.Empty);
+
+    //Packets
+    rpc SendPacketOut(core_adapter.PacketOut) returns(google.protobuf.Empty);
+
+    // PM
+    rpc UpdatePmConfig(core_adapter.PmConfigsInfo) returns(google.protobuf.Empty);
+
+    // Image
+    rpc DownloadOnuImage(device.DeviceImageDownloadRequest) returns (device.DeviceImageResponse);
+    rpc GetOnuImageStatus(device.DeviceImageRequest) returns (device.DeviceImageResponse);
+    rpc AbortOnuImageUpgrade(device.DeviceImageRequest) returns (device.DeviceImageResponse);
+    rpc GetOnuImages(common.ID) returns (device.OnuImages);
+    rpc ActivateOnuImage(device.DeviceImageRequest) returns (device.DeviceImageResponse);
+    rpc CommitOnuImage(device.DeviceImageRequest) returns (device.DeviceImageResponse);
+
+    // Deprecated Image APIs
+    rpc DownloadImage(core_adapter.ImageDownloadMessage) returns (device.ImageDownload) {
+        option deprecated = true;
+    };
+    rpc GetImageDownloadStatus(core_adapter.ImageDownloadMessage) returns (device.ImageDownload) {
+        option deprecated = true;
+    };
+    rpc CancelImageDownload(core_adapter.ImageDownloadMessage) returns (device.ImageDownload) {
+        option deprecated = true;
+    };
+    rpc ActivateImageUpdate(core_adapter.ImageDownloadMessage) returns (device.ImageDownload) {
+        option deprecated = true;
+    };
+    rpc RevertImageUpdate(core_adapter.ImageDownloadMessage) returns (device.ImageDownload) {
+        option deprecated = true;
+    };
+
+    // Tests
+    rpc StartOmciTest(core_adapter.OMCITest) returns(omci.TestResponse);
+    rpc SimulateAlarm(core_adapter.SimulateAlarmMessage) returns (common.OperationResp);
+
+    // Events
+    rpc SuppressEvent(event.EventFilter) returns(google.protobuf.Empty);
+    rpc UnSuppressEvent(event.EventFilter) returns(google.protobuf.Empty);
+
+    // Get/Set
+    rpc GetExtValue(core_adapter.GetExtValueMessage) returns (extension.ReturnValues);
+    rpc SetExtValue(core_adapter.SetExtValueMessage) returns (google.protobuf.Empty);
+    rpc GetSingleValue(extension.SingleGetValueRequest) returns (extension.SingleGetValueResponse);
+    rpc SetSingleValue(extension.SingleSetValueRequest) returns (extension.SingleSetValueResponse);
+}
diff --git a/protos/voltha_protos/adapter_services.proto b/protos/voltha_protos/adapter_services.proto
deleted file mode 100755
index 967511e..0000000
--- a/protos/voltha_protos/adapter_services.proto
+++ /dev/null
@@ -1,99 +0,0 @@
-syntax = "proto3";
-
-option go_package = "github.com/opencord/voltha-protos/v5/go/adapter_services";
-option java_package = "org.opencord.adapter_services";
-option java_outer_classname = "VolthaAdapterServices";
-
-package voltha;
-
-import "google/protobuf/empty.proto";
-import  "voltha_protos/common.proto";
-import  "voltha_protos/inter_container.proto";
-import "voltha_protos/device.proto";
-import "voltha_protos/extensions.proto";
-import "voltha_protos/openolt.proto";
-import "voltha_protos/health.proto";
-import "voltha_protos/voltha.proto";
-
-// Service waiting for Core requests
-service AdapterService {
-    // GetHealthStatus is used by an AdapterService client to verify connectivity
-    // to the gRPC server hosting the AdapterService service
-    rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
-
-    // Device
-    rpc AdoptDevice(Device) returns(google.protobuf.Empty);
-    rpc ReconcileDevice(Device) returns(google.protobuf.Empty);
-    rpc DeleteDevice(Device) returns(google.protobuf.Empty);
-    rpc DisableDevice(Device) returns(google.protobuf.Empty);
-    rpc ReEnableDevice(Device) returns(google.protobuf.Empty);
-    rpc RebootDevice(Device) returns(google.protobuf.Empty);
-    rpc SelfTestDevice(Device) returns(google.protobuf.Empty);
-    rpc GetOfpDeviceInfo(Device) returns(SwitchCapability);
-    rpc ChildDeviceLost(Device) returns(google.protobuf.Empty);
-
-    // Ports
-    rpc EnablePort(Port) returns(google.protobuf.Empty);
-    rpc DisablePort(Port) returns(google.protobuf.Empty);
-
-    // Flows
-    rpc UpdateFlowsBulk(BulkFlows) returns(google.protobuf.Empty);
-    rpc UpdateFlowsIncrementally(IncrementalFlows) returns(google.protobuf.Empty);
-
-    //Packets
-    rpc SendPacketOut(PacketOut) returns(google.protobuf.Empty);
-
-    // PM
-    rpc UpdatePmConfig(PmConfigsInfo) returns(google.protobuf.Empty);
-
-    // Image
-    rpc DownloadOnuImage(DeviceImageDownloadRequest) returns (DeviceImageResponse);
-    rpc GetOnuImageStatus(DeviceImageRequest) returns (DeviceImageResponse);
-    rpc AbortOnuImageUpgrade(DeviceImageRequest) returns (DeviceImageResponse);
-    rpc GetOnuImages(common.ID) returns (OnuImages);
-    rpc ActivateOnuImage(DeviceImageRequest) returns (DeviceImageResponse);
-    rpc CommitOnuImage(DeviceImageRequest) returns (DeviceImageResponse);
-
-    // Deprecated Image APIs
-    rpc DownloadImage(ImageDownloadMessage) returns (ImageDownload);
-    rpc GetImageDownloadStatus(ImageDownloadMessage) returns (ImageDownload);
-    rpc CancelImageDownload(ImageDownloadMessage) returns (ImageDownload);
-    rpc ActivateImageUpdate(ImageDownloadMessage) returns (ImageDownload);
-    rpc RevertImageUpdate(ImageDownloadMessage) returns (ImageDownload);
-
-    // Tests
-    rpc StartOmciTest(OMCITest) returns(TestResponse);
-    rpc SimulateAlarm(SimulateAlarmMessage) returns (common.OperationResp);
-
-    // Events
-    rpc SuppressEvent(EventFilter) returns(google.protobuf.Empty);
-    rpc UnSuppressEvent(EventFilter) returns(google.protobuf.Empty);
-
-    // Get/Set
-    rpc GetExtValue(GetExtValueMessage) returns (common.ReturnValues);
-    rpc SetExtValue(SetExtValueMessage) returns (google.protobuf.Empty);
-    rpc GetSingleValue(extension.SingleGetValueRequest) returns (extension.SingleGetValueResponse);
-    rpc SetSingleValue(extension.SingleSetValueRequest) returns (extension.SingleSetValueResponse);
-}
-
-
-service OnuInterAdapterService {
-    // GetHealthStatus is used by an OnuInterAdapterService client to verify connectivity
-    // to the gRPC server hosting the OnuInterAdapterService service
-    rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
-
-    rpc OnuIndication(OnuIndicationMessage) returns (google.protobuf.Empty);
-    rpc OmciIndication(OmciMessage) returns (google.protobuf.Empty);
-    rpc DownloadTechProfile(TechProfileDownloadMessage) returns (google.protobuf.Empty);
-    rpc DeleteGemPort(DeleteGemPortMessage) returns (google.protobuf.Empty);
-    rpc DeleteTCont(DeleteTcontMessage) returns (google.protobuf.Empty);
-}
-
-service OltInterAdapterService {
-    // GetHealthStatus is used by an OltInterAdapterService client to verify connectivity
-    // to the gRPC server hosting the OltInterAdapterService service
-    rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
-
-    rpc ProxyOmciRequest(OmciMessage) returns (google.protobuf.Empty);
-    rpc GetTechProfileInstance(TechProfileInstanceRequestMessage) returns (TechProfileDownloadMessage);
-}
\ No newline at end of file
diff --git a/protos/voltha_protos/common.proto b/protos/voltha_protos/common.proto
index 19d81d7..9efbdd9 100755
--- a/protos/voltha_protos/common.proto
+++ b/protos/voltha_protos/common.proto
@@ -100,28 +100,4 @@
     // Additional Info
     string additional_info = 2;
 }
-message ValueType {
-        enum Type {
-                EMPTY = 0;
-                DISTANCE = 1;
-        }
-}
-message ValueSpecifier {
-	string id = 1;
-	ValueType.Type value = 2;
-}
 
-message ReturnValues {
-        uint32  Set = 1;       // Specifies what values are
-                               // set/valid in return
-
-        uint32 Unsupported = 2; // Specifies requested values not
-                                // supported by the device
-
-        uint32 Error  = 3;      // Specifies requested values not
-                                // fetched because of error
-
-        uint32 Distance = 4;    // Value of distance Set includes
-                                // DISTANCE
-
-}
diff --git a/protos/voltha_protos/core.proto b/protos/voltha_protos/core.proto
index ad8f83a..c0563c7 100755
--- a/protos/voltha_protos/core.proto
+++ b/protos/voltha_protos/core.proto
@@ -3,13 +3,7 @@
 option go_package = "github.com/opencord/voltha-protos/v5/go/core";
 option java_package = "org.opencord.voltha.core";
 
-import "google/protobuf/empty.proto";
-import "voltha_protos/inter_container.proto";
-import "voltha_protos/common.proto";
-import "voltha_protos/device.proto";
-import "voltha_protos/health.proto";
-
-package voltha;
+package core;
 
 message DeviceTransientState {
     // Transient State for devices
@@ -27,38 +21,8 @@
 	DELETING_POST_ADAPTER_RESPONSE = 4;
 	// State to represent that the device deletion is failed
 	DELETE_FAILED = 5;
-        // State to represent that reconcile is in progress
-        RECONCILE_IN_PROGRESS = 6;
+    // State to represent that reconcile is in progress
+    RECONCILE_IN_PROGRESS = 6;
     }
     Types transient_state = 1;
 }
-
-service CoreService {
-	//	 in coreProxy interface
-	rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
-	rpc RegisterAdapter (AdapterRegistration) returns (google.protobuf.Empty);
-	rpc DeviceUpdate (Device) returns (google.protobuf.Empty);
-	rpc PortCreated (Port) returns (google.protobuf.Empty);
-	rpc PortsStateUpdate (PortStateFilter) returns (google.protobuf.Empty);
-	rpc DeleteAllPorts (common.ID) returns (google.protobuf.Empty);
-	rpc GetDevicePort (PortFilter) returns (Port);
-	rpc ListDevicePorts (common.ID) returns (Ports);
-	rpc DeviceStateUpdate (DeviceStateFilter) returns (google.protobuf.Empty);
-	rpc DevicePMConfigUpdate (PmConfigs) returns (google.protobuf.Empty);
-	rpc ChildDeviceDetected (DeviceDiscovery) returns (Device);
-	rpc ChildDevicesLost (common.ID) returns (google.protobuf.Empty);
-	rpc ChildDevicesDetected (common.ID) returns (google.protobuf.Empty);
-	rpc GetDevice (common.ID) returns (Device);
-	rpc GetChildDevice (ChildDeviceFilter) returns (Device);
-	rpc GetChildDevices (common.ID) returns (Devices);
-	rpc SendPacketIn (PacketIn) returns (google.protobuf.Empty);
-	rpc DeviceReasonUpdate (DeviceReason) returns (google.protobuf.Empty);
-	rpc PortStateUpdate (PortState) returns (google.protobuf.Empty);
-
-	// Additional API found in the Core - unused?
-	rpc ReconcileChildDevices (common.ID) returns (google.protobuf.Empty);
-	rpc GetChildDeviceWithProxyAddress (Device.ProxyAddress) returns (Device);
-	rpc GetPorts (PortFilter) returns (Ports);
-	rpc ChildrenStateUpdate (DeviceStateFilter) returns (google.protobuf.Empty);
-	rpc UpdateImageDownload (ImageDownload) returns (google.protobuf.Empty);
-}
\ No newline at end of file
diff --git a/protos/voltha_protos/core_adapter.proto b/protos/voltha_protos/core_adapter.proto
new file mode 100755
index 0000000..e58aaaa
--- /dev/null
+++ b/protos/voltha_protos/core_adapter.proto
@@ -0,0 +1,131 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/core_adapter";
+option java_package = "org.opencord.voltha.core_adapter";
+
+import "voltha_protos/common.proto";
+import "voltha_protos/voltha.proto";
+import "voltha_protos/openflow_13.proto";
+import "voltha_protos/adapter.proto";
+import "voltha_protos/device.proto";
+import "voltha_protos/extensions.proto";
+import "voltha_protos/omci_test.proto";
+
+package core_adapter;
+
+// Core-Adapter messages
+
+message AdapterRegistration {
+    adapter.Adapter adapter  = 1;
+    device.DeviceTypes dTypes = 2;
+}
+
+message ChildDeviceFilter {
+    string parent_id = 1;
+    string serial_number = 2;
+    uint32 onu_id = 3;
+    uint32 parent_port_no = 4;
+}
+
+message PortFilter {
+    string device_id = 1;
+    uint32 port = 2;
+    device.Port.PortType port_type = 3;
+}
+
+message DeviceDiscovery {
+    string parent_id = 1;
+    uint32 parent_port_no = 2;
+    string child_device_type = 3;
+    uint32 channel_id = 4;
+    string vendor_id = 5;
+    string serial_number = 6;
+    uint32 onu_id = 7;
+}
+
+message DeviceStateFilter {
+    string device_id = 1;
+    string parent_device_id = 2;
+    common.OperStatus.Types oper_status = 3;
+    common.ConnectStatus.Types conn_status = 4;
+}
+
+message PortState {
+    string device_id = 1;
+    device.Port.PortType port_type = 2;
+    uint32 port_no = 3;
+    common.OperStatus.Types oper_status = 4;
+}
+
+message PortStateFilter {
+    string device_id = 1;
+    uint32 port_type_filter = 2;
+    common.OperStatus.Types oper_status = 4;
+}
+
+message PacketIn {
+    string device_id = 1;
+    uint32 port = 2;
+    bytes packet = 3;
+}
+
+message PacketOut {
+    string device_id = 1;
+    uint32 egress_port_no = 2;
+    openflow_13.ofp_packet_out packet = 3;
+}
+
+message DeviceReason {
+    string device_id = 1;
+    string reason = 2;
+}
+
+message BulkFlows {
+    device.Device device = 1;
+    openflow_13.Flows flows = 2;
+    openflow_13.FlowGroups groups = 3;
+    openflow_13.FlowMetadata flow_metadata = 4;
+}
+
+message IncrementalFlows {
+    device.Device device = 1;
+    openflow_13.FlowChanges flows = 2;
+    openflow_13.FlowGroupChanges groups = 3;
+    openflow_13.FlowMetadata flow_metadata = 4;
+}
+
+message PmConfigsInfo {
+    string device_id = 1;
+    device.PmConfigs pm_configs = 2;
+}
+
+message SwitchCapability {
+    openflow_13.ofp_desc desc = 1;
+    openflow_13.ofp_switch_features switch_features = 2;
+}
+
+message ImageDownloadMessage {
+    device.Device device = 1;
+    device.ImageDownload image = 2;
+}
+
+message OMCITest {
+    device.Device device = 1;
+    omci.OmciTestRequest request = 2;
+}
+
+message SimulateAlarmMessage {
+    device.Device device = 1;
+    device.SimulateAlarmRequest request = 2;
+}
+
+message GetExtValueMessage {
+    device.Device parent_device = 1;
+    device.Device child_device = 2;
+    extension.ValueType.Type value_type=3;
+}
+
+message SetExtValueMessage {
+    device.Device device = 1;
+    extension.ValueSet value=3;
+}
diff --git a/protos/voltha_protos/core_services.proto b/protos/voltha_protos/core_services.proto
new file mode 100755
index 0000000..b6c16da
--- /dev/null
+++ b/protos/voltha_protos/core_services.proto
@@ -0,0 +1,45 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/core_service";
+option java_package = "org.opencord.voltha.core_service";
+option java_outer_classname = "VolthaCoreService";
+
+package core_service;
+
+import "google/protobuf/empty.proto";
+import "voltha_protos/core_adapter.proto";
+import "voltha_protos/common.proto";
+import "voltha_protos/device.proto";
+import "voltha_protos/health.proto";
+
+// The CoreService is a gRPC service implemented by the Voltha RW-Core for the
+// sole purpose of serving requests/updates from the Voltha adapters. 
+service CoreService {
+	//	 in coreProxy interface
+	rpc GetHealthStatus(google.protobuf.Empty) returns (health.HealthStatus);
+	rpc RegisterAdapter (core_adapter.AdapterRegistration) returns (google.protobuf.Empty);
+	rpc DeviceUpdate (device.Device) returns (google.protobuf.Empty);
+	rpc PortCreated (device.Port) returns (google.protobuf.Empty);
+	rpc PortsStateUpdate (core_adapter.PortStateFilter) returns (google.protobuf.Empty);
+	rpc DeleteAllPorts (common.ID) returns (google.protobuf.Empty);
+	rpc GetDevicePort (core_adapter.PortFilter) returns (device.Port);
+	rpc ListDevicePorts (common.ID) returns (device.Ports);
+	rpc DeviceStateUpdate (core_adapter.DeviceStateFilter) returns (google.protobuf.Empty);
+	rpc DevicePMConfigUpdate (device.PmConfigs) returns (google.protobuf.Empty);
+	rpc ChildDeviceDetected (core_adapter.DeviceDiscovery) returns (device.Device);
+	rpc ChildDevicesLost (common.ID) returns (google.protobuf.Empty);
+	rpc ChildDevicesDetected (common.ID) returns (google.protobuf.Empty);
+	rpc GetDevice (common.ID) returns (device.Device);
+	rpc GetChildDevice (core_adapter.ChildDeviceFilter) returns (device.Device);
+	rpc GetChildDevices (common.ID) returns (device.Devices);
+	rpc SendPacketIn (core_adapter.PacketIn) returns (google.protobuf.Empty);
+	rpc DeviceReasonUpdate (core_adapter.DeviceReason) returns (google.protobuf.Empty);
+	rpc PortStateUpdate (core_adapter.PortState) returns (google.protobuf.Empty);
+
+	// Additional API found in the Core - unused?
+	rpc ReconcileChildDevices (common.ID) returns (google.protobuf.Empty);
+	rpc GetChildDeviceWithProxyAddress (device.Device.ProxyAddress) returns (device.Device);
+	rpc GetPorts (core_adapter.PortFilter) returns (device.Ports);
+	rpc ChildrenStateUpdate (core_adapter.DeviceStateFilter) returns (google.protobuf.Empty);
+	rpc UpdateImageDownload (device.ImageDownload) returns (google.protobuf.Empty);
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/device.proto b/protos/voltha_protos/device.proto
index f1ac063..9f05ed9 100755
--- a/protos/voltha_protos/device.proto
+++ b/protos/voltha_protos/device.proto
@@ -1,15 +1,14 @@
 syntax = "proto3";
 
 option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
-option java_package = "org.opencord.voltha";
+option java_package = "org.opencord.voltha.device";
 option java_outer_classname = "VolthaDevice";
 
-package voltha;
+package device;
 
 import "google/protobuf/any.proto";
 
 import "voltha_protos/common.proto";
-import "voltha_protos/meta.proto";
 import "voltha_protos/openflow_13.proto";
 
 // A Device Type
@@ -67,9 +66,9 @@
     string id = 1; // To work around a chameleon POST bug
     uint32 default_freq = 2; // Default sample rate
     // Forces group names and group semantics
-    bool grouped = 3 [(access) = READ_ONLY];
+    bool grouped = 3;
     // Allows Pm to set an individual sample frequency
-    bool freq_override = 4 [(access) = READ_ONLY];
+    bool freq_override = 4;
     repeated PmGroupConfig groups = 5; // The groups if grouped is true
     repeated PmConfig metrics = 6; // The metrics themselves if grouped is false.
     uint32 max_skew = 7; //Default value is set to 5 seconds
@@ -135,6 +134,7 @@
 // Older version of the API please see DeviceImageDownloadRequest
 // Deprecated in voltha 2.8, will be removed
 message ImageDownload {
+    option deprecated = true;
     enum ImageDownloadState {
         DOWNLOAD_UNKNOWN = 0;
         DOWNLOAD_SUCCEEDED = 1;
@@ -206,6 +206,7 @@
 
 // Deprecated in voltha 2.8, will be removed
 message ImageDownloads {
+    option deprecated = true;
     repeated ImageDownload items = 2;
 }
 
@@ -338,33 +339,33 @@
 // A Physical Device instance
 message Device {
     // Voltha's device identifier
-    string id = 1 [(access) = READ_ONLY];
+    string id = 1 ;
 
     // Device type, refers to one of the registered device types
-    string type = 2 [(access) = READ_ONLY];
+    string type = 2 ;
 
     // Is this device a root device. Each logical switch has one root
     // device that is associated with the logical flow switch.
-    bool root = 3 [(access) = READ_ONLY];
+    bool root = 3 ;
 
     // Parent device id, in the device tree (for a root device, the parent_id
     // is the logical_device.id)
-    string parent_id = 4 [(access) = READ_ONLY];
-    uint32 parent_port_no = 20 [(access) = READ_ONLY];
+    string parent_id = 4;
+    uint32 parent_port_no = 20;
 
     // Vendor, version, serial number, etc.
-    string vendor = 5 [(access) = READ_ONLY];
-    string model = 6 [(access) = READ_ONLY];
-    string hardware_version = 7 [(access) = READ_ONLY];
-    string firmware_version = 8 [(access) = READ_ONLY];
+    string vendor = 5;
+    string model = 6;
+    string hardware_version = 7;
+    string firmware_version = 8;
     // List of software on the device
-    Images images = 9 [(access) = READ_ONLY];
-    string serial_number = 10 [(access) = READ_ONLY];
-    string vendor_id = 24 [(access) = READ_ONLY];
+    Images images = 9;
+    string serial_number = 10;
+    string vendor_id = 24;
 
-    // Adapter that takes care of device
-    // Deprecated and replaced by adapter_endpoint
-    string adapter = 11 [(access) = READ_ONLY];
+    // adapter is deprecated and replaced by adapter_endpoint
+    reserved 11;
+    //string adapter = 11;
 
     // Indicates how to reach the adapter instance that manages this device
     string adapter_endpoint = 25;
@@ -404,25 +405,72 @@
 
     common.AdminState.Types admin_state = 16;
 
-    common.OperStatus.Types oper_status = 17 [(access) = READ_ONLY];
+    common.OperStatus.Types oper_status = 17 ;
 
-    string reason = 22 [(access) = READ_ONLY];  //  Used in FAILED state
+    string reason = 22 ;  //  Used in FAILED state
 
-    common.ConnectStatus.Types connect_status = 18 [(access) = READ_ONLY];
+    common.ConnectStatus.Types connect_status = 18 ;
 
     // TODO additional common attribute here
 
     // Device type specific attributes
     google.protobuf.Any custom = 64;
 
-    // PmConfigs will eventually converted to a child node of the
-    // device to falicitata callbacks and to simplify manipulation.
-    PmConfigs pm_configs = 131 [(child_node) = {}];
+    // PmConfigs type
+    PmConfigs pm_configs = 131 ;
 
-    repeated ImageDownload image_downloads = 133 [(child_node) = {key: "name"}];
+    repeated ImageDownload image_downloads = 133;
 
 }
 
+message DeviceImageDownloadRequest {
+
+    // Device Id
+    // allows for operations on multiple devices.
+    repeated common.ID device_id = 1;
+
+    //The image for the device containing all the information
+    Image image = 2;
+
+    //Activate the image if the download to the device is successful
+    bool activateOnSuccess = 3;
+
+    //Automatically commit the image if the activation on the device is successful
+    bool commitOnSuccess = 4;
+}
+
+message DeviceImageRequest {
+
+    //Device Id
+    //allows for operations on multiple adapters.
+    repeated common.ID device_id = 1;
+
+    // Image Version, this is the sole identifier of the image. it's the vendor specified OMCI version
+    // must be known at the time of initiating a download, activate, commit image on an onu.
+    string version = 2;
+
+    //Automatically commit the image if the activation on the device is successful
+    bool commitOnSuccess = 3;
+}
+
+message DeviceImageResponse {
+
+    //Image state for the different devices
+    repeated DeviceImageState device_image_states = 1;
+}
+
+// Device Self Test Response
+message SelfTestResponse {
+
+	enum SelfTestResult  {
+	    SUCCESS = 0;
+	    FAILURE = 1;
+	    NOT_SUPPORTED = 2;
+	    UNKNOWN_ERROR = 3;
+    }
+    SelfTestResult result = 1;
+}
+
 message Devices {
     repeated Device items = 1;
 }
diff --git a/protos/voltha_protos/events.proto b/protos/voltha_protos/events.proto
index e9d36ba..9376805 100755
--- a/protos/voltha_protos/events.proto
+++ b/protos/voltha_protos/events.proto
@@ -1,15 +1,43 @@
 syntax = "proto3";
 
 option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
-option java_package = "org.opencord.voltha";
+option java_package = "org.opencord.voltha.events";
 
-package voltha;
+package event;
 
-import "voltha_protos/meta.proto";
 import "google/api/annotations.proto";
 import "google/protobuf/timestamp.proto";
 import "voltha_protos/common.proto";
 
+
+message EventFilterRuleKey {
+
+    enum EventFilterRuleType {
+        filter_all = 0;
+        category = 1;
+        sub_category = 2;
+        kpi_event_type = 3;
+        config_event_type = 4;
+        device_event_type = 5;
+    }
+}
+
+message EventFilterRule {
+    EventFilterRuleKey.EventFilterRuleType key = 1;
+    string value = 2;
+}
+message EventFilter {
+    string id = 1 ;
+    bool enable = 2;
+    string device_id = 3;
+    string event_type = 4;
+    repeated EventFilterRule rules = 5;
+}
+
+message EventFilters {
+    repeated EventFilter filters = 1;
+}
+
 message ConfigEventType {
     enum Types {
         add = 0; // A new config has been added
diff --git a/protos/voltha_protos/extensions.proto b/protos/voltha_protos/extensions.proto
index 81c7942..9e5b0c1 100755
--- a/protos/voltha_protos/extensions.proto
+++ b/protos/voltha_protos/extensions.proto
@@ -19,9 +19,43 @@
 
 package extension;
 
-import public "voltha_protos/ext_config.proto";
+import "voltha_protos/ext_config.proto";
 import "google/protobuf/empty.proto";
 
+message ValueSet {
+    string id = 1;
+    oneof value{
+        config.AlarmConfig alarm_config = 2;
+    }
+}
+
+message ValueType {
+    enum Type {
+            EMPTY = 0;
+            DISTANCE = 1;
+    }
+}
+
+message ValueSpecifier {
+    string id = 1;
+    ValueType.Type value = 2;
+}
+
+message ReturnValues {
+    uint32  Set = 1;       // Specifies what values are
+                           // set/valid in return
+
+    uint32 Unsupported = 2; // Specifies requested values not
+                            // supported by the device
+
+    uint32 Error  = 3;      // Specifies requested values not
+                            // fetched because of error
+
+    uint32 Distance = 4;    // Value of distance Set includes
+                            // DISTANCE
+
+}
+
 message GetDistanceRequest {
     string onuDeviceId = 1;
 }
diff --git a/protos/voltha_protos/health.proto b/protos/voltha_protos/health.proto
index 8ed3cbc..d152d9a 100755
--- a/protos/voltha_protos/health.proto
+++ b/protos/voltha_protos/health.proto
@@ -1,13 +1,12 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
-option java_package = "org.opencord.voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/health";
+option java_package = "org.opencord.voltha.health";
 
-package voltha;
+package health;
 
 import "google/api/annotations.proto";
 import "google/protobuf/empty.proto";
-import "voltha_protos/meta.proto";
 
 // Encode health status of a Voltha instance
 message HealthStatus {
@@ -20,7 +19,7 @@
     }
 
     // Current state of health of this Voltha instance
-    HealthState state = 1 [(access) = READ_ONLY];
+    HealthState state = 1 ;
 }
 
 // Health related services
diff --git a/protos/voltha_protos/ietf_interfaces.proto b/protos/voltha_protos/ietf_interfaces.proto
index 89f59b9..51b1612 100755
--- a/protos/voltha_protos/ietf_interfaces.proto
+++ b/protos/voltha_protos/ietf_interfaces.proto
@@ -1,7 +1,7 @@
 syntax = "proto3";
 
 option go_package = "github.com/opencord/voltha-protos/v5/go/ietf";
-option java_package = "org.opencord.voltha";
+option java_package = "org.opencord.voltha.ietf";
 
 package ietf;
 
diff --git a/protos/voltha_protos/inter_adapter.proto b/protos/voltha_protos/inter_adapter.proto
new file mode 100755
index 0000000..e622ce9
--- /dev/null
+++ b/protos/voltha_protos/inter_adapter.proto
@@ -0,0 +1,61 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/inter_adapter";
+option java_package = "org.opencord.voltha.inter_adapter";
+
+import "voltha_protos/common.proto";
+import "voltha_protos/voltha.proto";
+import "voltha_protos/tech_profile.proto";
+import "voltha_protos/openolt.proto";
+import "voltha_protos/device.proto";
+
+package inter_adapter;
+
+
+// Inter-Adapter messages
+
+message OmciMessage {
+    bytes message = 1;
+    common.ConnectStatus.Types connect_status = 2;
+    device.Device.ProxyAddress proxy_address = 3;
+    string parent_device_id = 4;
+    string child_device_id = 5;
+}
+
+message TechProfileDownloadMessage {
+    string device_id = 1;
+    uint32 uni_id = 2;
+    string tp_instance_path = 3;
+    oneof tech_tp_instance {
+        tech_profile.TechProfileInstance tp_instance = 4; // relevant for GPON, XGPON and XGS-PON technologies
+        tech_profile.EponTechProfileInstance epon_tp_instance = 5; // relevant for EPON technology
+    }
+}
+
+message DeleteGemPortMessage {
+    string device_id = 1;
+    uint32 uni_id = 2;
+    string tp_instance_path = 3;
+    uint32 gem_port_id = 4;
+}
+
+message DeleteTcontMessage {
+    string device_id = 1;
+    uint32 uni_id = 2;
+    string tp_instance_path = 3;
+    uint32 alloc_id = 4;
+}
+
+message OnuIndicationMessage {
+    string device_id = 1;
+    openolt.OnuIndication onu_indication = 2;
+}
+
+message TechProfileInstanceRequestMessage {
+    string device_id = 1;
+    string tp_instance_path = 2; // technology profile instance path
+    string parent_device_id = 3;
+    uint32 parent_pon_port = 4;
+    uint32 onu_id = 5;
+    uint32 uni_id = 6;
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/inter_container.proto b/protos/voltha_protos/inter_container.proto
deleted file mode 100755
index 6c946af..0000000
--- a/protos/voltha_protos/inter_container.proto
+++ /dev/null
@@ -1,186 +0,0 @@
-syntax = "proto3";
-
-option go_package = "github.com/opencord/voltha-protos/v5/go/inter_container";
-option java_package = "org.opencord.voltha";
-
-import "voltha_protos/common.proto";
-import "voltha_protos/voltha.proto";
-import "voltha_protos/openflow_13.proto";
-import "voltha_protos/tech_profile.proto";
-import "voltha_protos/openolt.proto";
-import "voltha_protos/adapter.proto";
-import "voltha_protos/device.proto";
-
-package voltha;
-
-//
-// Core-Adapter messages
-// ****
-// ****
-// ****
-message AdapterRegistration {
-    Adapter adapter  = 1;
-    DeviceTypes dTypes = 2;
-}
-
-message ChildDeviceFilter {
-    string parent_id = 1;
-    string serial_number = 2;
-    uint32 onu_id = 3;
-    uint32 parent_port_no = 4;
-}
-
-message PortFilter {
-    string device_id = 1;
-    uint32 port = 2;
-    Port.PortType port_type = 3;
-}
-
-message DeviceDiscovery {
-    string parent_id = 1;
-    uint32 parent_port_no = 2;
-    string child_device_type = 3;
-    uint32 channel_id = 4;
-    string vendor_id = 5;
-    string serial_number = 6;
-    uint32 onu_id = 7;
-}
-
-message DeviceStateFilter {
-    string device_id = 1;
-    string parent_device_id = 2;
-    common.OperStatus.Types oper_status = 3;
-    common.ConnectStatus.Types conn_status = 4;
-}
-
-message PortState {
-    string device_id = 1;
-    Port.PortType port_type = 2;
-    uint32 port_no = 3;
-    common.OperStatus.Types oper_status = 4;
-}
-
-message PortStateFilter {
-    string device_id = 1;
-    uint32 port_type_filter = 2;
-    common.OperStatus.Types oper_status = 4;
-}
-
-message PacketIn {
-    string device_id = 1;
-    uint32 port = 2;
-    bytes packet = 3;
-}
-
-message PacketOut {
-    string device_id = 1;
-    uint32 egress_port_no = 2;
-    openflow_13.ofp_packet_out packet = 3;
-}
-
-message DeviceReason {
-    string device_id = 1;
-    string reason = 2;
-}
-
-message BulkFlows {
-    Device device = 1;
-    openflow_13.Flows flows = 2;
-    openflow_13.FlowGroups groups = 3;
-    voltha.FlowMetadata flow_metadata = 4;
-}
-
-message IncrementalFlows {
-    Device device = 1;
-    openflow_13.FlowChanges flows = 2;
-    openflow_13.FlowGroupChanges groups = 3;
-    voltha.FlowMetadata flow_metadata = 4;
-}
-
-message PmConfigsInfo {
-    string device_id = 1;
-    PmConfigs pm_configs = 2;
-}
-
-message SwitchCapability {
-    openflow_13.ofp_desc desc = 1;
-    openflow_13.ofp_switch_features switch_features = 2;
-}
-
-message ImageDownloadMessage {
-    Device device = 1;
-    ImageDownload image = 2;
-}
-
-message OMCITest {
-    Device device = 1;
-    OmciTestRequest request = 2;
-}
-
-message SimulateAlarmMessage {
-    Device device = 1;
-    SimulateAlarmRequest request = 2;
-}
-
-message GetExtValueMessage {
-    Device parent_device = 1;
-    Device child_device = 2;
-    common.ValueType.Type value_type=3;
-}
-
-message SetExtValueMessage {
-    Device device = 1;
-    ValueSet value=3;
-}
-
-//
-// Inter-Adapter messages
-// ****
-// ****
-// ****
-
-message OmciMessage {
-    bytes message = 1;
-    common.ConnectStatus.Types connect_status = 2;
-    voltha.Device.ProxyAddress proxy_address = 3;
-    string parent_device_id = 4;
-    string child_device_id = 5;
-}
-
-message TechProfileDownloadMessage {
-    string device_id = 1;
-    uint32 uni_id = 2;
-    string tp_instance_path = 3;
-    oneof tech_tp_instance {
-        tech_profile.TechProfileInstance tp_instance = 4; // relevant for GPON, XGPON and XGS-PON technologies
-        tech_profile.EponTechProfileInstance epon_tp_instance = 5; // relevant for EPON technology
-    }
-}
-
-message DeleteGemPortMessage {
-    string device_id = 1;
-    uint32 uni_id = 2;
-    string tp_instance_path = 3;
-    uint32 gem_port_id = 4;
-}
-
-message DeleteTcontMessage {
-    string device_id = 1;
-    uint32 uni_id = 2;
-    string tp_instance_path = 3;
-    uint32 alloc_id = 4;
-}
-
-message OnuIndicationMessage {
-    string device_id = 1;
-    openolt.OnuIndication onu_indication = 2;
-}
-
-message TechProfileInstanceRequestMessage {
-    string device_id = 1;
-    string tp_instance_path = 2; // technology profile instance path
-    string parent_device_id = 3;
-    uint32 parent_pon_port = 4;
-    uint32 onu_id = 5;
-    uint32 uni_id = 6;
-}
\ No newline at end of file
diff --git a/protos/voltha_protos/logical_device.proto b/protos/voltha_protos/logical_device.proto
index 9931251..dddcbb0 100755
--- a/protos/voltha_protos/logical_device.proto
+++ b/protos/voltha_protos/logical_device.proto
@@ -1,13 +1,12 @@
 syntax = "proto3";
 
 option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
-option java_package = "org.opencord.voltha";
+option java_package = "org.opencord.voltha.logical_device";
 option java_outer_classname = "OFLogicalDevice";
 
-package voltha;
+package logical_device;
 
 import "google/api/annotations.proto";
-import "voltha_protos/meta.proto";
 import "voltha_protos/openflow_13.proto";
 
 message LogicalPortId {
diff --git a/protos/voltha_protos/meta.proto b/protos/voltha_protos/meta.proto
deleted file mode 100755
index 4dd6d5d..0000000
--- a/protos/voltha_protos/meta.proto
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2015, Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// This file contains annotation definitions that can be used to describe
-// a configuration tree.
-
-syntax = "proto3";
-
-option go_package = "github.com/opencord/voltha-protos/v5/go/common";
-option java_package = "org.opencord.voltha.common";
-
-package voltha;
-
-import "google/protobuf/descriptor.proto";
-
-message ChildNode {
-    string key = 1;
-}
-
-enum Access {
-
-    // read-write, stored attribute
-    CONFIG = 0;
-
-    // read-only field, stored with the model, covered by its hash
-    READ_ONLY = 1;
-
-    // A read-only attribute that is not stored in the model, not covered
-    // by its hash, its value is filled real-time upon each request.
-    REAL_TIME = 2;
-
-}
-
-extend google.protobuf.FieldOptions {
-
-    // If present, it indicates that this field is stored as external child node
-    // or children nodes in Voltha's internal configuration tree.
-    // If the field is a container field and if the option specifies a key
-    // the child objects will be addressible by that key.
-    ChildNode child_node = 7761772;
-
-    // This annotation can be used to indicate that a field is read-only,
-    // from the perspective of NBI access. Backend plugins and system
-    // internals can update the field but the update requests through the
-    // NBI will ignore for instance a field that is marked as read-only (RO).
-    Access access = 7761773;
-}
diff --git a/protos/voltha_protos/olt_inter_adapter_service.proto b/protos/voltha_protos/olt_inter_adapter_service.proto
new file mode 100755
index 0000000..5d4773f
--- /dev/null
+++ b/protos/voltha_protos/olt_inter_adapter_service.proto
@@ -0,0 +1,20 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service";
+option java_package = "org.opencord.voltha.olt_inter_adapter_service";
+option java_outer_classname = "VolthaOltInterAdapterService";
+
+package olt_inter_adapter_service;
+
+import "google/protobuf/empty.proto";
+import "voltha_protos/inter_adapter.proto";
+import "voltha_protos/health.proto";
+
+service OltInterAdapterService {
+    // GetHealthStatus is used by an OltInterAdapterService client to verify connectivity
+    // to the gRPC server hosting the OltInterAdapterService service
+    rpc GetHealthStatus(google.protobuf.Empty) returns (health.HealthStatus);
+
+    rpc ProxyOmciRequest(inter_adapter.OmciMessage) returns (google.protobuf.Empty);
+    rpc GetTechProfileInstance(inter_adapter.TechProfileInstanceRequestMessage) returns (inter_adapter.TechProfileDownloadMessage);
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/omci_alarm_db.proto b/protos/voltha_protos/omci_alarm_db.proto
index 2fd6d57..940a844 100755
--- a/protos/voltha_protos/omci_alarm_db.proto
+++ b/protos/voltha_protos/omci_alarm_db.proto
@@ -20,49 +20,44 @@
 
 package omci;
 
-import "voltha_protos/meta.proto";
-
 
 message AlarmAttributeData {
-    string name        = 1 [(voltha.access) = READ_ONLY];
+    string name        = 1;
     string value       = 2;
 }
 
 message AlarmInstanceData {
-    uint32 instance_id      = 1 [(voltha.access) = READ_ONLY];
+    uint32 instance_id      = 1;
     string created          = 2;
     string modified         = 3;
 
-    repeated AlarmAttributeData attributes = 4
-    [(voltha.child_node) = {key: "name"}];
+    repeated AlarmAttributeData attributes = 4;
 }
 
 message AlarmClassData {
-    uint32 class_id         = 1 [(voltha.access) = READ_ONLY];
+    uint32 class_id         = 1;
 
-    repeated AlarmInstanceData instances= 2
-    [(voltha.child_node) = {key: "instance_id"}];
+    repeated AlarmInstanceData instances= 2;
 }
 
 message AlarmManagedEntity {
-    uint32 class_id  = 1 [(voltha.access) = READ_ONLY];
-    string name      = 2 [(voltha.access) = READ_ONLY];
+    uint32 class_id  = 1;
+    string name      = 2;
 }
 
 message AlarmMessageType {
-    uint32 message_type = 1 [(voltha.access) = READ_ONLY];
+    uint32 message_type = 1;
 }
 
 message AlarmDeviceData {
-    string device_id             = 1 [(voltha.access) = READ_ONLY];
+    string device_id             = 1;
     string created               = 2;
     uint32 last_alarm_sequence   = 3;
     string last_sync_time        = 4;
     uint32 version               = 5;
 
 
-    repeated AlarmClassData classes = 6
-    [(voltha.child_node) = {key: "class_id"}];
+    repeated AlarmClassData classes = 6;
 
     repeated AlarmManagedEntity managed_entities = 7;
     repeated AlarmMessageType message_types = 8;
diff --git a/protos/voltha_protos/omci_mib_db.proto b/protos/voltha_protos/omci_mib_db.proto
index 1813845..62f1656 100755
--- a/protos/voltha_protos/omci_mib_db.proto
+++ b/protos/voltha_protos/omci_mib_db.proto
@@ -20,48 +20,42 @@
 
 package omci;
 
-import "voltha_protos/meta.proto";
-
-
 message MibAttributeData {
-    string name        = 1 [(voltha.access) = READ_ONLY];
+    string name        = 1;
     string value       = 2;
 }
 
 message MibInstanceData {
-    uint32 instance_id      = 1 [(voltha.access) = READ_ONLY];
+    uint32 instance_id      = 1;
     string created          = 2;
     string modified         = 3;
 
-    repeated MibAttributeData attributes = 4
-    [(voltha.child_node) = {key: "name"}];
+    repeated MibAttributeData attributes = 4;
 }
 
 message MibClassData {
-    uint32 class_id         = 1 [(voltha.access) = READ_ONLY];
+    uint32 class_id         = 1;
 
-    repeated MibInstanceData instances= 2
-    [(voltha.child_node) = {key: "instance_id"}];
+    repeated MibInstanceData instances= 2;
 }
 
 message ManagedEntity {
-    uint32 class_id  = 1 [(voltha.access) = READ_ONLY];
-    string name      = 2 [(voltha.access) = READ_ONLY];
+    uint32 class_id  = 1;
+    string name      = 2;
 }
 
 message MessageType {
-    uint32 message_type = 1 [(voltha.access) = READ_ONLY];
+    uint32 message_type = 1;
 }
 
 message MibDeviceData {
-    string device_id        = 1 [(voltha.access) = READ_ONLY];
+    string device_id        = 1;
     string created          = 2;
     string last_sync_time   = 3;
     uint32 mib_data_sync    = 4;
     uint32 version          = 5;
 
-    repeated MibClassData classes = 6
-    [(voltha.child_node) = {key: "class_id"}];
+    repeated MibClassData classes = 6;
 
     repeated ManagedEntity managed_entities = 7;
     repeated MessageType message_types = 8;
diff --git a/protos/voltha_protos/omci_test.proto b/protos/voltha_protos/omci_test.proto
new file mode 100755
index 0000000..cd4f507
--- /dev/null
+++ b/protos/voltha_protos/omci_test.proto
@@ -0,0 +1,21 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/omci";
+
+package omci;
+
+option java_package = "org.opencord.voltha.omci";
+
+message OmciTestRequest {
+    string id = 1;
+    string uuid = 2;
+}
+
+message TestResponse{
+    enum TestResponseResult  {
+        SUCCESS = 0;
+        FAILURE = 1;
+    }
+    TestResponseResult result = 1;
+}
+
diff --git a/protos/voltha_protos/onu_inter_adapter_service.proto b/protos/voltha_protos/onu_inter_adapter_service.proto
new file mode 100755
index 0000000..ee4dff7
--- /dev/null
+++ b/protos/voltha_protos/onu_inter_adapter_service.proto
@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service";
+option java_package = "org.opencord.voltha.onu_inter_adapter_service";
+option java_outer_classname = "VolthaOnuInterAdapterService";
+
+package onu_inter_adapter_service;
+
+import "google/protobuf/empty.proto";
+import "voltha_protos/inter_adapter.proto";
+import "voltha_protos/health.proto";
+
+service OnuInterAdapterService {
+    // GetHealthStatus is used by an OnuInterAdapterService client to verify connectivity
+    // to the gRPC server hosting the OnuInterAdapterService service
+    rpc GetHealthStatus(google.protobuf.Empty) returns (health.HealthStatus);
+
+    rpc OnuIndication(inter_adapter.OnuIndicationMessage) returns (google.protobuf.Empty);
+    rpc OmciIndication(inter_adapter.OmciMessage) returns (google.protobuf.Empty);
+    rpc DownloadTechProfile(inter_adapter.TechProfileDownloadMessage) returns (google.protobuf.Empty);
+    rpc DeleteGemPort(inter_adapter.DeleteGemPortMessage) returns (google.protobuf.Empty);
+    rpc DeleteTCont(inter_adapter.DeleteTcontMessage) returns (google.protobuf.Empty);
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/openflow_13.proto b/protos/voltha_protos/openflow_13.proto
index 3a6a315..2f6791e 100755
--- a/protos/voltha_protos/openflow_13.proto
+++ b/protos/voltha_protos/openflow_13.proto
@@ -2308,4 +2308,10 @@
         ofp_port_status port_status = 2;
         ofp_error_msg error = 3;
     }
+}
+
+// Additional information required to process flow at device adapters
+message FlowMetadata {
+    // Meters associated with flow-update to adapter
+    repeated openflow_13.ofp_meter_config meters = 1;
 }
\ No newline at end of file
diff --git a/protos/voltha_protos/openolt.proto b/protos/voltha_protos/openolt.proto
index b68727a..03fe064 100755
--- a/protos/voltha_protos/openolt.proto
+++ b/protos/voltha_protos/openolt.proto
@@ -20,9 +20,9 @@
 
 package openolt;
 import "google/api/annotations.proto";
-import public "voltha_protos/tech_profile.proto";
-import public "voltha_protos/common.proto";
+import "voltha_protos/tech_profile.proto";
 import "voltha_protos/ext_config.proto";
+import "voltha_protos/extensions.proto";
 
 service Openolt {
 
@@ -196,7 +196,7 @@
         };
     }
 
-    rpc GetExtValue(ValueParam) returns (common.ReturnValues) {
+    rpc GetExtValue(ValueParam) returns (extension.ReturnValues) {
         option (google.api.http) = {
           post: "/v1/GetExtValue"
           body: "*"
@@ -750,7 +750,7 @@
 
 message ValueParam {
 	Onu onu = 1;
-	common.ValueType.Type value = 2;
+	extension.ValueType.Type value = 2;
 }
 
 message PonRxPowerData {
diff --git a/protos/voltha_protos/voltha.proto b/protos/voltha_protos/voltha.proto
index 1d4dc78..359858e 100755
--- a/protos/voltha_protos/voltha.proto
+++ b/protos/voltha_protos/voltha.proto
@@ -13,71 +13,30 @@
 import "google/api/annotations.proto";
 import "google/protobuf/empty.proto";
 
-import public "voltha_protos/meta.proto";
 import public "voltha_protos/common.proto";
-import public "voltha_protos/health.proto";
-import public "voltha_protos/logical_device.proto";
-import public "voltha_protos/device.proto";
-import public "voltha_protos/adapter.proto";
-import public "voltha_protos/openflow_13.proto";
+import "voltha_protos/health.proto";
+import "voltha_protos/logical_device.proto";
+import "voltha_protos/device.proto";
+import "voltha_protos/adapter.proto";
+import "voltha_protos/openflow_13.proto";
+import "voltha_protos/events.proto";
+import "voltha_protos/extensions.proto";
 
 import "voltha_protos/omci_mib_db.proto";
 import "voltha_protos/omci_alarm_db.proto";
-import "voltha_protos/ext_config.proto";
+import "voltha_protos/omci_test.proto";
 
 option java_package = "org.opencord.voltha";
 option java_outer_classname = "VolthaProtos";
 option csharp_namespace = "Opencord.Voltha.Voltha";
 
-message DeviceGroup {
-
-    string id = 1 [(access) = READ_ONLY];
-
-    repeated LogicalDevice logical_devices = 2 [(child_node) = {key: "id"}];
-
-    repeated Device devices = 3 [(child_node) = {key: "id"}];
-}
-
-message DeviceGroups {
-    repeated DeviceGroup items = 1;
-}
-
-
-message EventFilterRuleKey {
-
-    enum EventFilterRuleType {
-        filter_all = 0;
-        category = 1;
-        sub_category = 2;
-        kpi_event_type = 3;
-        config_event_type = 4;
-        device_event_type = 5;
-    }
-}
-
-message EventFilterRule {
-    EventFilterRuleKey.EventFilterRuleType key = 1;
-    string value = 2;
-}
-message EventFilter {
-    string id = 1 [(access) = READ_ONLY];
-    bool enable = 2;
-    string device_id = 3;
-    string event_type = 4;
-    repeated EventFilterRule rules = 5;
-}
-
-message EventFilters {
-    repeated EventFilter filters = 1;
-}
-
 // CoreInstance represents a core instance.  It is data held in memory when a core
 // is running.  This data is not persistent.
 message CoreInstance {
 
-    string instance_id = 1  [(access) = READ_ONLY];
+    string instance_id = 1;
 
-    HealthStatus health = 2 [(child_node) = {}];
+    health.HealthStatus health = 2;
 
 }
 
@@ -85,123 +44,33 @@
     repeated CoreInstance items = 1;
 }
 
-message OmciTestRequest {
-    string id = 1;
-    string uuid = 2;
-}
-
-message TestResponse{
-    enum TestResponseResult  {
-        SUCCESS = 0;
-        FAILURE = 1;
-    }
-    TestResponseResult result = 1;
-}
-
-message ValueSet {
-    string id = 1;
-    oneof value{
-        config.AlarmConfig alarm_config = 2;
-    }
-}
 
 // Voltha represents the Voltha cluster data.  Each Core instance will hold a subset of
 // the entire cluster. However, some items (e.g. adapters) will be held by all cores
 // for better performance
 message Voltha {
 
-    string version = 1 [(access) = READ_ONLY];
+    string version = 1 ;
 
-    repeated Adapter adapters = 2 [(child_node) = {key: "id"}];
+    repeated adapter.Adapter adapters = 2;
 
-    repeated LogicalDevice logical_devices = 3 [(child_node) = {key: "id"}];
+    repeated logical_device.LogicalDevice logical_devices = 3;
 
-    repeated Device devices = 4 [(child_node) = {key: "id"}];
+    repeated device.Device devices = 4;
 
-    repeated DeviceType device_types = 5 [(child_node) = {key: "id"}];
+    repeated device.DeviceType device_types = 5;
 
-    repeated DeviceGroup device_groups = 6 [(child_node) = {key: "id"}];
+    reserved 6;
+    // device_groups is not used
+    // repeated DeviceGroup device_groups = 6;
 
-    repeated EventFilter event_filters = 7 [(child_node) = {key: "id"}];
+    repeated event.EventFilter event_filters = 7;
 
     repeated
-        omci.MibDeviceData omci_mib_database = 28
-        [(child_node) = {key: "device_id"}];
+        omci.MibDeviceData omci_mib_database = 28;
 
     repeated
-        omci.AlarmDeviceData omci_alarm_database = 29
-        [(child_node) = {key: "device_id"}];
-}
-
-// Device Self Test Response
-message SelfTestResponse {
-
-	enum SelfTestResult  {
-	    SUCCESS = 0;
-	    FAILURE = 1;
-	    NOT_SUPPORTED = 2;
-	    UNKNOWN_ERROR = 3;
-    }
-    SelfTestResult result = 1;
-}
-
-message OfAgentSubscriber {
-    // ID of ofagent instance
-    string ofagent_id = 1;
-
-    // ID of voltha instance to which the ofagent is subscribed
-    string voltha_id = 2;
-}
-
-// Identifies a membership group a Core belongs to
-message Membership {
-    //  Group name
-    string group_name = 1;
-
-    // Unique ID of a container within that group
-    string id = 2;
-}
-
-message DeviceImageDownloadRequest {
-
-    // Device Id
-    // allows for operations on multiple devices.
-    repeated common.ID device_id = 1;
-
-    //The image for the device containing all the information
-    Image image = 2;
-
-    //Activate the image if the download to the device is successful
-    bool activateOnSuccess = 3;
-
-    //Automatically commit the image if the activation on the device is successful
-    bool commitOnSuccess = 4;
-}
-
-message DeviceImageRequest {
-
-    //Device Id
-    //allows for operations on multiple adapters.
-    repeated common.ID device_id = 1;
-
-    // Image Version, this is the sole identifier of the image. it's the vendor specified OMCI version
-    // must be known at the time of initiating a download, activate, commit image on an onu.
-    string version = 2;
-
-    //Automatically commit the image if the activation on the device is successful
-    bool commitOnSuccess = 3;
-}
-
-message DeviceImageResponse {
-
-    //Image state for the different devices
-    repeated DeviceImageState device_image_states = 1;
-}
-
-// Additional information required to process flow at device adapters
-message FlowMetadata {
-    // Meters associated with flow-update to adapter
-    repeated openflow_13.ofp_meter_config meters = 1;
+        omci.AlarmDeviceData omci_alarm_database = 29;
 }
 
 /*
@@ -209,22 +78,6 @@
  *
  */
 service VolthaService {
-
-    // Get the membership group of a Voltha Core
-    rpc GetMembership(google.protobuf.Empty) returns(Membership) {
-        option (google.api.http) = {
-            get: "/api/v1/membership"
-        };
-    }
-
-    // Set the membership group of a Voltha Core
-    rpc UpdateMembership(Membership) returns(google.protobuf.Empty) {
-        option (google.api.http) = {
-            post: "/api/v1/membership"
-            body: "*"
-        };
-    }
-
     // Get high level information on the Voltha cluster
     rpc GetVoltha(google.protobuf.Empty) returns(Voltha) {
         option (google.api.http) = {
@@ -247,7 +100,7 @@
     }
 
     // List all active adapters (plugins) in the Voltha cluster
-    rpc ListAdapters(google.protobuf.Empty) returns(Adapters) {
+    rpc ListAdapters(google.protobuf.Empty) returns(adapter.Adapters) {
         option (google.api.http) = {
             get: "/api/v1/adapters"
         };
@@ -255,42 +108,42 @@
 
 
     // List all logical devices managed by the Voltha cluster
-    rpc ListLogicalDevices(google.protobuf.Empty) returns(LogicalDevices) {
+    rpc ListLogicalDevices(google.protobuf.Empty) returns(logical_device.LogicalDevices) {
         option (google.api.http) = {
             get: "/api/v1/logical_devices"
         };
     }
 
     // Get additional information on a given logical device
-    rpc GetLogicalDevice(common.ID) returns(LogicalDevice) {
+    rpc GetLogicalDevice(common.ID) returns(logical_device.LogicalDevice) {
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}"
         };
     }
 
     // List ports of a logical device
-    rpc ListLogicalDevicePorts(common.ID) returns(LogicalPorts) {
+    rpc ListLogicalDevicePorts(common.ID) returns(logical_device.LogicalPorts) {
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}/ports"
         };
     }
 
     // Gets a logical device port
-    rpc GetLogicalDevicePort(LogicalPortId) returns(LogicalPort) {
+    rpc GetLogicalDevicePort(logical_device.LogicalPortId) returns(logical_device.LogicalPort) {
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}/ports/{port_id}"
         };
     }
 
     // Enables a logical device port
-    rpc EnableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {
+    rpc EnableLogicalDevicePort(logical_device.LogicalPortId) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             post: "/api/v1/logical_devices/{id}/ports/{port_id}/enable"
         };
     }
 
     // Disables a logical device port
-    rpc DisableLogicalDevicePort(LogicalPortId) returns(google.protobuf.Empty) {
+    rpc DisableLogicalDevicePort(logical_device.LogicalPortId) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             post: "/api/v1/logical_devices/{id}/ports/{port_id}/disable"
         };
@@ -345,7 +198,7 @@
     }
 
     // List all physical devices controlled by the Voltha cluster
-    rpc ListDevices(google.protobuf.Empty) returns(Devices) {
+    rpc ListDevices(google.protobuf.Empty) returns(device.Devices) {
         option (google.api.http) = {
             get: "/api/v1/devices"
         };
@@ -367,14 +220,14 @@
     }
 
     // Get more information on a given physical device
-    rpc GetDevice(common.ID) returns(Device) {
+    rpc GetDevice(common.ID) returns(device.Device) {
         option (google.api.http) = {
             get: "/api/v1/devices/{id}"
         };
     }
 
     // Pre-provision a new physical device
-    rpc CreateDevice(Device) returns(Device) {
+    rpc CreateDevice(device.Device) returns(device.Device) {
         option (google.api.http) = {
             post: "/api/v1/devices"
             body: "*"
@@ -421,7 +274,8 @@
     // Request an image download to the standby partition
     // of a device.
     // Note that the call is expected to be non-blocking.
-    rpc DownloadImage(ImageDownload) returns(common.OperationResp) {
+    rpc DownloadImage(device.ImageDownload) returns(common.OperationResp) {
+        option deprecated = true;
         option (google.api.http) = {
             post: "/api/v1/devices/{id}/image_downloads/{name}"
             body: "*"
@@ -431,7 +285,8 @@
     // Get image download status on a device
     // The request retrieves progress on device and updates db record
     // Deprecated in voltha 2.8, will be removed
-    rpc GetImageDownloadStatus(ImageDownload) returns(ImageDownload) {
+    rpc GetImageDownloadStatus(device.ImageDownload) returns(device.ImageDownload) {
+        option deprecated = true;
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/image_downloads/{name}/status"
         };
@@ -439,7 +294,8 @@
 
     // Get image download db record
     // Deprecated in voltha 2.8, will be removed
-    rpc GetImageDownload(ImageDownload) returns(ImageDownload) {
+    rpc GetImageDownload(device.ImageDownload) returns(device.ImageDownload) {
+        option deprecated = true;
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/image_downloads/{name}"
         };
@@ -447,7 +303,8 @@
 
     // List image download db records for a given device
     // Deprecated in voltha 2.8, will be removed
-    rpc ListImageDownloads(common.ID) returns(ImageDownloads) {
+    rpc ListImageDownloads(common.ID) returns(device.ImageDownloads) {
+        option deprecated = true;
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/image_downloads"
         };
@@ -455,7 +312,8 @@
 
     // Cancel an existing image download process on a device
     // Deprecated in voltha 2.8, will be removed
-    rpc CancelImageDownload(ImageDownload) returns(common.OperationResp) {
+    rpc CancelImageDownload(device.ImageDownload) returns(common.OperationResp) {
+        option deprecated = true;
         option (google.api.http) = {
             delete: "/api/v1/devices/{id}/image_downloads/{name}"
         };
@@ -469,7 +327,8 @@
     // activated image running on device
     // Note that the call is expected to be non-blocking.
     // Deprecated in voltha 2.8, will be removed
-    rpc ActivateImageUpdate(ImageDownload) returns(common.OperationResp) {
+    rpc ActivateImageUpdate(device.ImageDownload) returns(common.OperationResp) {
+        option deprecated = true;
         option (google.api.http) = {
             post: "/api/v1/devices/{id}/image_downloads/{name}/image_update"
             body: "*"
@@ -484,7 +343,8 @@
     // previous image running on device
     // Note that the call is expected to be non-blocking.
     // Deprecated in voltha 2.8, will be removed
-    rpc RevertImageUpdate(ImageDownload) returns(common.OperationResp) {
+    rpc RevertImageUpdate(device.ImageDownload) returns(common.OperationResp) {
+        option deprecated = true;
         option (google.api.http) = {
             post: "/api/v1/devices/{id}/image_downloads/{name}/image_revert"
             body: "*"
@@ -493,7 +353,7 @@
 
     // Downloads a certain image to the standby partition of the devices
     // Note that the call is expected to be non-blocking.
-    rpc DownloadImageToDevice (DeviceImageDownloadRequest) returns (DeviceImageResponse) {
+    rpc DownloadImageToDevice (device.DeviceImageDownloadRequest) returns (device.DeviceImageResponse) {
         option (google.api.http) = {
             get: "/api/v1/devices/images/download_images"
         };
@@ -501,7 +361,7 @@
 
     // Get image status on a number of devices devices
     // Polled from northbound systems to get state of download/activate/commit
-    rpc GetImageStatus (DeviceImageRequest) returns (DeviceImageResponse) {
+    rpc GetImageStatus (device.DeviceImageRequest) returns (device.DeviceImageResponse) {
         option (google.api.http) = {
             get: "/api/v1/devices/images/images_status"
         };
@@ -511,14 +371,14 @@
     // To be used carefully, stops any further operations for the Image on the given devices
     // Might also stop if possible existing work, but no guarantees are given,
     // depends on implementation and procedure status.
-    rpc AbortImageUpgradeToDevice (DeviceImageRequest) returns (DeviceImageResponse) {
+    rpc AbortImageUpgradeToDevice (device.DeviceImageRequest) returns (device.DeviceImageResponse) {
         option (google.api.http) = {
             get: "/api/v1/devices/images/abort_upgrade_images"
         };
     }
 
     // Get Both Active and Standby image for a given device
-    rpc GetOnuImages (common.ID) returns (OnuImages) {
+    rpc GetOnuImages (common.ID) returns (device.OnuImages) {
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/onu_images"
         };
@@ -531,7 +391,7 @@
     // If no reboot, then a reboot is required to make the
     // activated image running on device
     // Note that the call is expected to be non-blocking.
-    rpc ActivateImage (DeviceImageRequest) returns (DeviceImageResponse) {
+    rpc ActivateImage (device.DeviceImageRequest) returns (device.DeviceImageResponse) {
         option (google.api.http) = {
             post: "/api/v1/devices/images/activate_images"
             body: "*"
@@ -544,7 +404,7 @@
     // If no reboot, then a reboot is required to make the
     // activated image running on device upon next reboot
     // Note that the call is expected to be non-blocking.
-    rpc CommitImage (DeviceImageRequest) returns (DeviceImageResponse) {
+    rpc CommitImage (device.DeviceImageRequest) returns (device.DeviceImageResponse) {
         option (google.api.http) = {
             post: "/api/v1/devices/images/commit_images"
             body: "*"
@@ -552,21 +412,21 @@
     }
 
     // List ports of a device
-    rpc ListDevicePorts (common.ID) returns (Ports) {
+    rpc ListDevicePorts (common.ID) returns (device.Ports) {
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/ports"
         };
     }
 
     // List pm config of a device
-    rpc ListDevicePmConfigs (common.ID) returns (PmConfigs) {
+    rpc ListDevicePmConfigs (common.ID) returns (device.PmConfigs) {
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/pm_configs"
         };
     }
 
     // Update the pm config of a device
-    rpc UpdateDevicePmConfigs(voltha.PmConfigs) returns(google.protobuf.Empty) {
+    rpc UpdateDevicePmConfigs(device.PmConfigs) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             post: "/api/v1/devices/{id}/pm_configs"
             body: "*"
@@ -588,26 +448,19 @@
     }
 
     // List device types known to Voltha
-    rpc ListDeviceTypes(google.protobuf.Empty) returns(DeviceTypes) {
+    rpc ListDeviceTypes(google.protobuf.Empty) returns(device.DeviceTypes) {
         option (google.api.http) = {
             get: "/api/v1/device_types"
         };
     }
 
     // Get additional information on a device type
-    rpc GetDeviceType(common.ID) returns(DeviceType) {
+    rpc GetDeviceType(common.ID) returns(device.DeviceType) {
         option (google.api.http) = {
             get: "/api/v1/device_types/{id}"
         };
     }
 
-    // List all device sharding groups
-    rpc ListDeviceGroups(google.protobuf.Empty) returns(DeviceGroups) {
-        option (google.api.http) = {
-            get: "/api/v1/device_groups"
-        };
-    }
-
     // Stream control packets to the dataplane
     rpc StreamPacketsOut(stream openflow_13.PacketOut)
         returns(google.protobuf.Empty) {
@@ -625,14 +478,7 @@
         // This does not have an HTTP representation
     }
 
-    // Get additional information on a device group
-    rpc GetDeviceGroup(common.ID) returns(DeviceGroup) {
-        option (google.api.http) = {
-            get: "/api/v1/device_groups/{id}"
-        };
-    }
-
-    rpc CreateEventFilter(EventFilter) returns(EventFilter) {
+    rpc CreateEventFilter(event.EventFilter) returns(event.EventFilter) {
         option (google.api.http) = {
             post: "/api/v1/event_filters"
             body: "*"
@@ -640,39 +486,39 @@
     }
 
     // Get all filters present for a device
-    rpc GetEventFilter(common.ID) returns(EventFilters) {
+    rpc GetEventFilter(common.ID) returns(event.EventFilters) {
         option (google.api.http) = {
             get: "/api/v1/event_filters/{id}"
         };
     }
 
-    rpc UpdateEventFilter(EventFilter) returns(EventFilter) {
+    rpc UpdateEventFilter(event.EventFilter) returns(event.EventFilter) {
         option (google.api.http) = {
             put: "/api/v1/event_filters/{id}"
             body: "*"
         };
     }
 
-    rpc DeleteEventFilter(EventFilter) returns(google.protobuf.Empty) {
+    rpc DeleteEventFilter(event.EventFilter) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             delete: "/api/v1/event_filters/{id}"
         };
     }
 
     // Get all the filters present
-    rpc ListEventFilters(google.protobuf.Empty) returns(EventFilters) {
+    rpc ListEventFilters(google.protobuf.Empty) returns(event.EventFilters) {
         option (google.api.http) = {
             get: "/api/v1/event_filters"
         };
     }
 
-    rpc GetImages(common.ID) returns(Images) {
+    rpc GetImages(common.ID) returns(device.Images) {
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/images"
         };
     }
 
-    rpc SelfTest(common.ID) returns(SelfTestResponse) {
+    rpc SelfTest(common.ID) returns(device.SelfTestResponse) {
         option (google.api.http) = {
             post: "/api/v1/devices/{id}/self_test"
         };
@@ -693,40 +539,38 @@
     }
 
     // Simulate an Alarm
-    rpc SimulateAlarm(SimulateAlarmRequest) returns(common.OperationResp) {
+    rpc SimulateAlarm(device.SimulateAlarmRequest) returns(common.OperationResp) {
         option (google.api.http) = {
             post: "/api/v1/devices/{id}/simulate_larm"
             body: "*"
         };
     }
-    rpc Subscribe (OfAgentSubscriber) returns (OfAgentSubscriber) {
-    }
 
-    rpc EnablePort(voltha.Port) returns(google.protobuf.Empty) {
+    rpc EnablePort(device.Port) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             post: "/v1/EnablePort"
             body: "*"
         };
     }
-    rpc DisablePort(voltha.Port) returns(google.protobuf.Empty) {
+    rpc DisablePort(device.Port) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             post: "/v1/DisablePort"
             body: "*"
         };
     }
-    rpc GetExtValue(common.ValueSpecifier) returns(common.ReturnValues) {
+    rpc GetExtValue(extension.ValueSpecifier) returns(extension.ReturnValues) {
         option (google.api.http) = {
             get: "/api/v1/GetExtValue"
         };
     }
-    rpc SetExtValue(ValueSet) returns(google.protobuf.Empty) {
+    rpc SetExtValue(extension.ValueSet) returns(google.protobuf.Empty) {
         option (google.api.http) = {
             get: "/api/v1/SetExtValue"
         };
     }
 
     // omci start and stop cli implementation
-    rpc StartOmciTestAction(OmciTestRequest) returns(TestResponse) {
+    rpc StartOmciTestAction(omci.OmciTestRequest) returns(omci.TestResponse) {
         option (google.api.http) = {
             post: "/api/v1/start_omci_test"
             body: "*"