diff --git a/protos/voltha_protos/adapter.proto b/protos/voltha_protos/adapter.proto
index 8c2a0cc..f5b2aa6 100644
--- a/protos/voltha_protos/adapter.proto
+++ b/protos/voltha_protos/adapter.proto
@@ -1,6 +1,8 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v3/go/voltha";
+option java_package = "org.opencord.voltha";
+option java_outer_classname = "VolthaAdapter";
 
 package voltha;
 
@@ -12,7 +14,8 @@
 message AdapterConfig {
 
     // Common adapter config attributes here
-    common.LogLevel.LogLevel log_level = 1;
+    common.LogLevel.Types log_level = 1;
+
 
     // Custom (vendor-specific) configuration attributes
     google.protobuf.Any additional_config = 64;
diff --git a/protos/voltha_protos/afrouter.proto b/protos/voltha_protos/afrouter.proto
index 1e83188..97ecec0 100644
--- a/protos/voltha_protos/afrouter.proto
+++ b/protos/voltha_protos/afrouter.proto
@@ -2,7 +2,8 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/afrouter";
+option go_package = "github.com/opencord/voltha-protos/v3/go/afrouter";
+option java_package = "org.opencord.voltha";
 
 package afrouter;
 
diff --git a/protos/voltha_protos/common.proto b/protos/voltha_protos/common.proto
index fb74a30..b6a2000 100644
--- a/protos/voltha_protos/common.proto
+++ b/protos/voltha_protos/common.proto
@@ -1,10 +1,10 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/common";
+option go_package = "github.com/opencord/voltha-protos/v3/go/common";
 
 package common;
 
-import "voltha_protos/yang_options.proto";
+option java_package = "org.opencord.voltha";
 
 // Convey a resource identifier
 message ID {
@@ -21,10 +21,8 @@
 }
 
 message LogLevel {
-    option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     // Logging verbosity level
-    enum LogLevel {
+    enum Types {
         DEBUG = 0;
         INFO = 1;
         WARNING = 2;
@@ -35,7 +33,7 @@
 }
 
 message Logging {
-    common.LogLevel.LogLevel level = 1;
+    common.LogLevel.Types level = 1;
     string package_name = 2;
     string component_name = 3;
 }
@@ -51,10 +49,8 @@
 }
 
 message AdminState {
-    option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     // Administrative State
-    enum AdminState {
+    enum Types {
 
         // The administrative state of the device is unknown
         UNKNOWN = 0;
@@ -78,10 +74,8 @@
 }
 
 message OperStatus {
-    option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     // Operational Status
-    enum OperStatus {
+    enum Types {
 
         // The status of the device is unknown at this point
         UNKNOWN = 0;
@@ -104,10 +98,8 @@
 }
 
 message ConnectStatus {
-    option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     // Connectivity Status
-    enum ConnectStatus {
+    enum Types {
 
         // The device connectivity status is unknown
         UNKNOWN = 0;
@@ -121,8 +113,6 @@
 }
 
 message OperationResp {
-    option (yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     enum OperationReturnCode {
         OPERATION_SUCCESS = 0;
         OPERATION_FAILURE = 1;
@@ -133,6 +123,4 @@
 
     // Additional Info
     string additional_info = 2;
-}
-
-
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/device.proto b/protos/voltha_protos/device.proto
index cd3f492..f4c44f5 100644
--- a/protos/voltha_protos/device.proto
+++ b/protos/voltha_protos/device.proto
@@ -1,6 +1,8 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v3/go/voltha";
+option java_package = "org.opencord.voltha";
+option java_outer_classname = "VolthaDevice";
 
 package voltha;
 
@@ -8,7 +10,6 @@
 import "voltha_protos/common.proto";
 import "voltha_protos/meta.proto";
 import "voltha_protos/openflow_13.proto";
-import "voltha_protos/yang_options.proto";
 
 // A Device Type
 message DeviceType {
@@ -100,8 +101,6 @@
 }
 
 message ImageDownload {
-    option (common.yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     enum ImageDownloadState {
         DOWNLOAD_UNKNOWN = 0;
         DOWNLOAD_SUCCEEDED = 1;
@@ -176,8 +175,6 @@
 }
 
 message Port {
-    option (common.yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     enum PortType {
         UNKNOWN = 0;
         ETHERNET_NNI = 1;
@@ -194,9 +191,9 @@
 
     PortType type = 3;  //  Type of port
 
-    common.AdminState.AdminState admin_state = 5;
+    common.AdminState.Types admin_state = 5;
 
-    common.OperStatus.OperStatus oper_status = 6;
+    common.OperStatus.Types oper_status = 6;
 
     string device_id = 7;  // Unique .id of device that owns this port
 
@@ -221,8 +218,6 @@
 
 // A Physical Device instance
 message Device {
-    option (common.yang_child_rule) = MOVE_TO_PARENT_LEVEL;
-
     // Voltha's device identifier
     string id = 1 [(access) = READ_ONLY];
 
@@ -283,13 +278,13 @@
 
     ProxyAddress proxy_address = 19;
 
-    common.AdminState.AdminState admin_state = 16;
+    common.AdminState.Types admin_state = 16;
 
-    common.OperStatus.OperStatus oper_status = 17 [(access) = READ_ONLY];
+    common.OperStatus.Types oper_status = 17 [(access) = READ_ONLY];
 
     string reason = 22 [(access) = READ_ONLY];  //  Used in FAILED state
 
-    common.ConnectStatus.ConnectStatus connect_status = 18 [(access) = READ_ONLY];
+    common.ConnectStatus.Types connect_status = 18 [(access) = READ_ONLY];
 
     // TODO additional common attribute here
 
diff --git a/protos/voltha_protos/events.proto b/protos/voltha_protos/events.proto
index 1bc3c9e..e985217 100644
--- a/protos/voltha_protos/events.proto
+++ b/protos/voltha_protos/events.proto
@@ -1,6 +1,7 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v3/go/voltha";
+option java_package = "org.opencord.voltha";
 
 package voltha;
 
@@ -8,7 +9,7 @@
 import "google/api/annotations.proto";
 
 message ConfigEventType {
-    enum ConfigEventType {
+    enum Types {
         add = 0; // A new config has been added
         remove = 1; // A config has been removed
         update = 2; // A config has been updated
@@ -16,14 +17,14 @@
 }
 
 message ConfigEvent {
-    ConfigEventType.ConfigEventType type = 1;
+    ConfigEventType.Types type = 1;
 
     string hash = 2; // hash for this change, can be used for quick lookup
     string data = 3; // the actual new data, in json format
 }
 
 message KpiEventType {
-    enum KpiEventType {
+    enum Types {
         slice = 0; // slice: a set of path/metric data for same time-stamp
         ts = 1; // time-series: array of data for same metric
     }
@@ -79,7 +80,7 @@
  */
 message KpiEvent {
 
-    KpiEventType.KpiEventType type = 1;
+    KpiEventType.Types type = 1;
 
     // Fields used when for slice:
 
@@ -91,7 +92,7 @@
 
 message KpiEvent2 {
     // Type of KPI Event
-    KpiEventType.KpiEventType type = 1;
+    KpiEventType.Types type = 1;
 
     // Fields used when for slice:
     double ts = 2;  // UTC time-stamp of data in slice mode (seconds since epoch)
@@ -106,7 +107,7 @@
  * moves to the new event defination for device alarms
  */
 message AlarmEventType {
-    enum AlarmEventType {
+    enum Types {
         COMMUNICATION = 0;
         ENVIRONMENT = 1;
         EQUIPMENT = 2;
@@ -123,7 +124,7 @@
  * defination for device alarms
  */
 message AlarmEventCategory {
-    enum AlarmEventCategory {
+    enum Types {
         PON = 0;
         OLT = 1;
         ONT = 2;
@@ -139,7 +140,7 @@
  * defination for device alarms
  */
 message AlarmEventState {
-    enum AlarmEventState {
+    enum Types {
         RAISED = 0;
         CLEARED = 1;
     }
@@ -152,7 +153,7 @@
  * defination for device alarms
  */
 message AlarmEventSeverity {
-    enum AlarmEventSeverity {
+    enum Types {
         INDETERMINATE = 0;
         WARNING = 1;
         MINOR = 2;
@@ -171,16 +172,16 @@
     string id = 1;
 
     // Refers to the area of the system impacted by the alarm
-    AlarmEventType.AlarmEventType type = 2;
+    AlarmEventType.Types type = 2;
 
     // Refers to functional category of the alarm
-    AlarmEventCategory.AlarmEventCategory category = 3;
+    AlarmEventCategory.Types category = 3;
 
     // Current active state of the alarm
-    AlarmEventState.AlarmEventState state = 4;
+    AlarmEventState.Types state = 4;
 
     // Overall impact of the alarm on the system
-    AlarmEventSeverity.AlarmEventSeverity severity = 5;
+    AlarmEventSeverity.Types severity = 5;
 
     // Timestamp at which the alarm was first raised
     float raised_ts = 6;
@@ -228,7 +229,7 @@
  * Identify the area of the system impacted by the event.
  */
 message EventCategory {
-    enum EventCategory {
+    enum Types {
         COMMUNICATION = 0;
         ENVIRONMENT = 1;
         EQUIPMENT = 2;
@@ -243,7 +244,7 @@
  * Identify the functional category originating the event
  */
 message EventSubCategory {
-    enum EventSubCategory {
+    enum Types {
         PON = 0;
         OLT = 1;
         ONT = 2;
@@ -257,7 +258,7 @@
  * Identify the type of event
 */
 message EventType {
-   enum EventType {
+   enum Types {
        CONFIG_EVENT = 0;
        KPI_EVENT    = 1;
        KPI_EVENT2   = 2;
@@ -274,13 +275,13 @@
     string id = 1;
 
     // Refers to the functional area affect by the event
-    EventCategory.EventCategory category = 2;
+    EventCategory.Types category = 2;
 
     // Refers to functional category of the event
-    EventSubCategory.EventSubCategory sub_category = 3;
+    EventSubCategory.Types sub_category = 3;
 
     // Refers to the type of the event
-    EventType.EventType type = 4;
+    EventType.Types type = 4;
 
     // The version identifier for this event type, thus allowing each
     // event type to evolve independently. The version should be in the
diff --git a/protos/voltha_protos/health.proto b/protos/voltha_protos/health.proto
index fcb343e..c73b369 100644
--- a/protos/voltha_protos/health.proto
+++ b/protos/voltha_protos/health.proto
@@ -1,6 +1,7 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v3/go/voltha";
+option java_package = "org.opencord.voltha";
 
 package voltha;
 
diff --git a/protos/voltha_protos/ietf_interfaces.proto b/protos/voltha_protos/ietf_interfaces.proto
index 90758d9..86e0803 100644
--- a/protos/voltha_protos/ietf_interfaces.proto
+++ b/protos/voltha_protos/ietf_interfaces.proto
@@ -1,6 +1,7 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/ietf";
+option go_package = "github.com/opencord/voltha-protos/v3/go/ietf";
+option java_package = "org.opencord.voltha";
 
 package ietf;
 
diff --git a/protos/voltha_protos/inter_container.proto b/protos/voltha_protos/inter_container.proto
index eb9c008..f69be88 100644
--- a/protos/voltha_protos/inter_container.proto
+++ b/protos/voltha_protos/inter_container.proto
@@ -1,6 +1,7 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/inter_container";
+option go_package = "github.com/opencord/voltha-protos/v3/go/inter_container";
+option java_package = "org.opencord.voltha";
 
 import public "voltha_protos/common.proto";
 import public "voltha_protos/voltha.proto";
@@ -119,7 +120,7 @@
 
 message InterAdapterOmciMessage {
     bytes message = 1; // OMCI_REQUEST or OMCI_RESPONSE
-    common.ConnectStatus.ConnectStatus connect_status = 2;
+    common.ConnectStatus.Types connect_status = 2;
     voltha.Device.ProxyAddress proxy_address = 3;
 }
 
diff --git a/protos/voltha_protos/logical_device.proto b/protos/voltha_protos/logical_device.proto
index dfb7c78..3205778 100644
--- a/protos/voltha_protos/logical_device.proto
+++ b/protos/voltha_protos/logical_device.proto
@@ -1,6 +1,8 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v3/go/voltha";
+option java_package = "org.opencord.voltha";
+option java_outer_classname = "OFLogicalDevice";
 
 package voltha;
 
diff --git a/protos/voltha_protos/meta.proto b/protos/voltha_protos/meta.proto
index d359df1..2eaee4d 100644
--- a/protos/voltha_protos/meta.proto
+++ b/protos/voltha_protos/meta.proto
@@ -17,7 +17,8 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/common";
+option go_package = "github.com/opencord/voltha-protos/v3/go/common";
+option java_package = "org.opencord.voltha.common";
 
 package voltha;
 
diff --git a/protos/voltha_protos/omci_alarm_db.proto b/protos/voltha_protos/omci_alarm_db.proto
index daeee43..470cb0b 100644
--- a/protos/voltha_protos/omci_alarm_db.proto
+++ b/protos/voltha_protos/omci_alarm_db.proto
@@ -15,7 +15,8 @@
 //
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/omci";
+option go_package = "github.com/opencord/voltha-protos/v3/go/omci";
+option java_package = "org.opencord.voltha.omci";
 
 package omci;
 
diff --git a/protos/voltha_protos/omci_mib_db.proto b/protos/voltha_protos/omci_mib_db.proto
index 4ee0638..9c3c48c 100644
--- a/protos/voltha_protos/omci_mib_db.proto
+++ b/protos/voltha_protos/omci_mib_db.proto
@@ -15,7 +15,8 @@
 //
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/omci";
+option go_package = "github.com/opencord/voltha-protos/v3/go/omci";
+option java_package = "org.opencord.voltha.omci";
 
 package omci;
 
@@ -67,13 +68,13 @@
 }
 
 message OpenOmciEventType {
-    enum OpenOmciEventType {
+    enum Types {
         state_change = 0; // A state machine has transitioned to a new state
     }
 }
 
 message OpenOmciEvent {
-    OpenOmciEventType.OpenOmciEventType type = 1;
+    OpenOmciEventType.Types type = 1;
 
     string data = 2; // associated data, in json format
 }
diff --git a/protos/voltha_protos/openflow_13.proto b/protos/voltha_protos/openflow_13.proto
index 59fb63b..b84efa5 100644
--- a/protos/voltha_protos/openflow_13.proto
+++ b/protos/voltha_protos/openflow_13.proto
@@ -57,12 +57,12 @@
  */
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/openflow_13";
+option go_package = "github.com/opencord/voltha-protos/v3/go/openflow_13";
+option java_package = "org.opencord.voltha.openflow13";
 
 package openflow_13;
 
 import "google/api/annotations.proto";
-import public "voltha_protos/yang_options.proto";
 
 
 /* Version number:
@@ -1630,7 +1630,7 @@
     OFPMMFC_BAD_RATE      = 6;  /* Rate unsupported. */
     OFPMMFC_BAD_BURST     = 7;  /* Burst size unsupported. */
     OFPMMFC_BAD_BAND      = 8;  /* Band unsupported. */
-    OFPMMFC_BAD_BAND_VALUE = 9; /* Band value unsupported. */
+    OFPMMFC_BAD_BAND_DETAIL = 9; /* Band value unsupported. */
     OFPMMFC_OUT_OF_METERS = 10; /* No more meters available. */
     OFPMMFC_OUT_OF_BANDS  = 11; /* The maximum number of properties
                                  * for a meter has been exceeded. */
@@ -2023,8 +2023,7 @@
 };
 
 message ofp_group_entry {
-    ofp_group_desc desc = 1 [(common.yang_inline_node).id = 'desc',
-                            (common.yang_inline_node).type = 'openflow_13-ofp_group_desc'];
+    ofp_group_desc desc = 1;
     ofp_group_stats stats = 2;
 };
 
@@ -2093,8 +2092,7 @@
 };
 
 message ofp_meter_entry {
-    ofp_meter_config config=1 [(common.yang_inline_node).id = 'config',
-                              (common.yang_inline_node).type = 'openflow_13-ofp_meter_config'];
+    ofp_meter_config config=1;
     ofp_meter_stats stats=2;
 }
 
diff --git a/protos/voltha_protos/openolt.proto b/protos/voltha_protos/openolt.proto
index 0376849..7e51b8e 100644
--- a/protos/voltha_protos/openolt.proto
+++ b/protos/voltha_protos/openolt.proto
@@ -14,7 +14,9 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/openolt";
+option go_package = "github.com/opencord/voltha-protos/v3/go/openolt";
+option java_package = "org.opencord.voltha.openolt";
+option java_outer_classname = "VolthaOpenOLT";
 
 package openolt;
 import "google/api/annotations.proto";
diff --git a/protos/voltha_protos/ponsim.proto b/protos/voltha_protos/ponsim.proto
index f56290f..202ccdb 100644
--- a/protos/voltha_protos/ponsim.proto
+++ b/protos/voltha_protos/ponsim.proto
@@ -1,6 +1,7 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v3/go/voltha";
+option java_package = "org.opencord.voltha";
 
 package voltha;
 
diff --git a/protos/voltha_protos/schema.proto b/protos/voltha_protos/schema.proto
deleted file mode 100644
index 530e03d..0000000
--- a/protos/voltha_protos/schema.proto
+++ /dev/null
@@ -1,40 +0,0 @@
-syntax = "proto3";
-
-option go_package = "github.com/opencord/voltha-protos/v2/go/schema";
-
-package schema;
-
-import "google/api/annotations.proto";
-import "google/protobuf/empty.proto";
-
-// Contains the name and content of a *.proto file
-message ProtoFile {
-    string file_name = 1;  // name of proto file
-    string proto = 2;  // content of proto file
-    bytes descriptor = 3;  // compiled descriptor for proto (zlib compressed)
-}
-
-// Proto files and compiled descriptors for this interface
-message Schemas {
-
-    // Proto files
-    repeated ProtoFile protos = 1;
-
-    // Proto file name from which swagger.json shall be generated
-    string swagger_from = 2;
-
-    // Proto file name from which yang schemas shall be generated
-    string yang_from = 3;
-}
-
-// Schema services
-service SchemaService {
-
-    // Return active grpc schemas
-    rpc GetSchema(google.protobuf.Empty) returns (Schemas) {
-        option (google.api.http) = {
-            get: "/schema"
-        };
-    }
-
-}
diff --git a/protos/voltha_protos/tech_profile.proto b/protos/voltha_protos/tech_profile.proto
index 690e0f6..16522cc 100644
--- a/protos/voltha_protos/tech_profile.proto
+++ b/protos/voltha_protos/tech_profile.proto
@@ -14,7 +14,8 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/tech_profile";
+option go_package = "github.com/opencord/voltha-protos/v3/go/tech_profile";
+option java_package = "org.opencord.voltha.tech_profile";
 
 package tech_profile;
 import "google/api/annotations.proto";
diff --git a/protos/voltha_protos/voltha.proto b/protos/voltha_protos/voltha.proto
index fc06dc3..e38efbb 100644
--- a/protos/voltha_protos/voltha.proto
+++ b/protos/voltha_protos/voltha.proto
@@ -6,7 +6,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v2/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v3/go/voltha";
 
 package voltha;
 
@@ -23,7 +23,6 @@
 
 import "voltha_protos/omci_mib_db.proto";
 import "voltha_protos/omci_alarm_db.proto";
-import "voltha_protos/yang_options.proto";
 
 option java_package = "org.opencord.voltha";
 option java_outer_classname = "VolthaProtos";
@@ -74,7 +73,6 @@
 // CoreInstance represents a core instance.  It is data held in memory when a core
 // is running.  This data is not persistent.
 message CoreInstance {
-    option (common.yang_message_rule) = CREATE_BOTH_GROUPING_AND_CONTAINER;
 
     string instance_id = 1  [(access) = READ_ONLY];
 
@@ -83,7 +81,6 @@
 }
 
 message CoreInstances {
-    option (common.yang_message_rule) = CREATE_BOTH_GROUPING_AND_CONTAINER;
     repeated CoreInstance items = 1;
 }
 
@@ -91,7 +88,6 @@
 // the entire cluster. However, some items (e.g. adapters) will be held by all cores
 // for better performance
 message Voltha {
-    option (common.yang_message_rule) = CREATE_BOTH_GROUPING_AND_CONTAINER;
 
     string version = 1 [(access) = READ_ONLY];
 
@@ -118,7 +114,6 @@
 
 // Device Self Test Response
 message SelfTestResponse {
-    option (common.yang_child_rule) = MOVE_TO_PARENT_LEVEL;
 
 	enum SelfTestResult  {
 	    SUCCESS = 0;
@@ -199,8 +194,6 @@
         option (google.api.http) = {
             get: "/api/v1/instances"
         };
-        option (common.yang_xml_tag).xml_tag = 'items';
-        option (common.yang_xml_tag).list_items_name = 'items';
     }
 
     // Get details on a Voltha cluster instance
@@ -215,7 +208,6 @@
         option (google.api.http) = {
             get: "/api/v1/adapters"
         };
-        option (common.yang_xml_tag).xml_tag = 'adapters';
     }
 
 
@@ -224,7 +216,6 @@
         option (google.api.http) = {
             get: "/api/v1/logical_devices"
         };
-        option (common.yang_xml_tag).xml_tag = 'logical_devices';
     }
 
     // Get additional information on a given logical device
@@ -239,7 +230,6 @@
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}/ports"
         };
-        option (common.yang_xml_tag).xml_tag = 'ports';
     }
 
     // Gets a logical device port
@@ -247,7 +237,6 @@
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}/ports/{port_id}"
         };
-        option (common.yang_xml_tag).xml_tag = 'port';
     }
 
     // Enables a logical device port
@@ -269,8 +258,6 @@
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}/flows"
         };
-        option (common.yang_xml_tag).xml_tag = 'flows';
-        option (common.yang_xml_tag).list_items_name = 'items';
     }
 
     // Update flow table for logical device
@@ -296,8 +283,6 @@
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}/meters"
         };
-        option (common.yang_xml_tag).xml_tag = 'meters';
-        option (common.yang_xml_tag).list_items_name = 'items';
     }
 
     // List all flow groups of a logical device
@@ -305,8 +290,6 @@
         option (google.api.http) = {
             get: "/api/v1/logical_devices/{id}/flow_groups"
         };
-        option (common.yang_xml_tag).xml_tag = 'flow_groups';
-        option (common.yang_xml_tag).list_items_name = 'items';
     }
 
     // Update group table for device
@@ -323,7 +306,6 @@
         option (google.api.http) = {
             get: "/api/v1/devices"
         };
-        option (common.yang_xml_tag).xml_tag = 'devices';
     }
 
     // List all physical devices IDs controlled by the Voltha cluster
@@ -331,8 +313,6 @@
         option (google.api.http) = {
             get: "/api/v1/deviceids"
         };
-        option (common.yang_xml_tag).xml_tag = 'id';
-        option (common.yang_xml_tag).list_items_name = 'items';
     }
 
     // Request to a voltha Core to reconcile a set of devices based on their IDs
@@ -460,7 +440,6 @@
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/ports"
         };
-        option (common.yang_xml_tag).xml_tag = 'ports';
     }
 
     // List pm config of a device
@@ -483,8 +462,6 @@
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/flows"
         };
-        option (common.yang_xml_tag).xml_tag = 'flows';
-        option (common.yang_xml_tag).list_items_name = 'items';
     }
 
     // List all flow groups of a device
@@ -492,8 +469,6 @@
         option (google.api.http) = {
             get: "/api/v1/devices/{id}/flow_groups"
         };
-        option (common.yang_xml_tag).xml_tag = 'flow_groups';
-        option (common.yang_xml_tag).list_items_name = 'items';
     }
 
     // List device types known to Voltha
@@ -501,7 +476,6 @@
         option (google.api.http) = {
             get: "/api/v1/device_types"
         };
-        option (common.yang_xml_tag).xml_tag = 'device_types';
     }
 
     // Get additional information on a device type
@@ -516,7 +490,6 @@
         option (google.api.http) = {
             get: "/api/v1/device_groups"
         };
-        option (common.yang_xml_tag).xml_tag = 'device_groups';
     }
 
     // Stream control packets to the dataplane
diff --git a/protos/voltha_protos/yang_options.proto b/protos/voltha_protos/yang_options.proto
deleted file mode 100644
index d6f15c0..0000000
--- a/protos/voltha_protos/yang_options.proto
+++ /dev/null
@@ -1,74 +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/v2/go/common";
-
-package common;
-
-import "google/protobuf/descriptor.proto";
-
-enum MessageParserOption {
-    // Move any enclosing child enum/message definition to the same level
-    // as the parent (this message) in the yang generated file
-    MOVE_TO_PARENT_LEVEL= 0;
-
-    // Create both a grouping and a container for this message.  The container
-    // name will be the message name.  The grouping name will be the message
-    // name prefixed with "grouping_"
-    CREATE_BOTH_GROUPING_AND_CONTAINER = 1;
-}
-
-message InlineNode {
-    string id = 1;
-    string type = 2;
-}
-
-message RpcReturnDef {
-    // The gRPC methods return message types.  NETCONF expects an actual
-    // attribute as defined in the YANG schema.  The xnl_tag will be used
-    // as the top most tag when translating a gRPC response into an xml
-    // response
-    string xml_tag = 1;
-
-    // When the gRPC response is a list of items, we need to differentiate
-    // between a YANG schema attribute whose name is "items" and when "items"
-    // is used only to indicate a list of items is being returned.  The default
-    // behavior assumes a list is returned when "items" is present in
-    // the response.  This option will therefore be used when the attribute
-    // name in the YANG schema is 'items'
-    string list_items_name = 2;
-}
-
-extend google.protobuf.MessageOptions {
-    // This annotation is used to indicate how a message is parsed when
-    // converting from proto to yang format.
-    MessageParserOption yang_child_rule = 7761774;
-
-    MessageParserOption yang_message_rule = 7761775;
-}
-
-extend google.protobuf.FieldOptions {
-    // If present, the field (a message reference) should be replaced by the
-    // message itself.  For now, this applies only to non-repeated fields.
-    InlineNode yang_inline_node = 7761776;
-}
-
-extend google.protobuf.MethodOptions {
-    RpcReturnDef yang_xml_tag = 7761777;
-}
