diff --git a/Makefile b/Makefile
index affda7f..d7cce7c 100644
--- a/Makefile
+++ b/Makefile
@@ -96,9 +96,12 @@
 docker-base:
 	docker build -t cord/voltha-base -f docker/Dockerfile.base .
 
-voltha:
+voltha: voltha-adapters
 	docker build -t cord/voltha -f docker/Dockerfile.voltha .
 
+voltha-adapters:
+	make -C voltha/adapters/asfvolt16_olt
+
 chameleon:
 	mkdir tmp.chameleon
 	cp -R chameleon/* tmp.chameleon
diff --git a/voltha/adapters/asfvolt16_olt/Makefile b/voltha/adapters/asfvolt16_olt/Makefile
new file mode 100644
index 0000000..c6672a2
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/Makefile
@@ -0,0 +1,30 @@
+#
+# Copyright 2017 the original author or authors.
+#
+# 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.
+#
+
+ifeq ($(VOLTHA_BASE)_set,_set)
+$(error To get started, please source the env.sh file)
+endif
+
+include $(VOLTHA_BASE)/setup.mk
+
+SUBDIRS = protos
+
+.PHONY: subdirs $(SUBDIRS)
+
+subdirs: $(SUBDIRS)
+
+$(SUBDIRS):
+	$(MAKE) -C $@
diff --git a/voltha/adapters/asfvolt16_olt/protos/Makefile b/voltha/adapters/asfvolt16_olt/protos/Makefile
new file mode 100644
index 0000000..4d81e8b
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/Makefile
@@ -0,0 +1,85 @@
+#
+# Copyright 2017 the original author or authors.
+#
+# 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.
+#
+
+# Makefile to build all protobuf and gRPC related artifacts
+
+ifeq ($(VOLTHA_BASE)_set,_set)
+  $(error To get started, please source the env.sh file from Voltha top level directory)
+endif
+
+default: build
+
+PROTO_FILES := $(wildcard *.proto) $(wildcard $(VOLTHA_BASE)/voltha/protos/third_party/google/api/*proto)
+PROTO_PB2_FILES := $(foreach f,$(PROTO_FILES),$(subst .proto,_pb2.py,$(f)))
+PROTO_DESC_FILES := $(foreach f,$(PROTO_FILES),$(subst .proto,.desc,$(f)))
+
+PROTOC_PREFIX := /usr/local
+PROTOC_LIBDIR := $(PROTOC_PREFIX)/lib
+
+PROTOC := $(PROTOC_PREFIX)/bin/protoc
+
+PROTOC_VERSION := "3.0.2"
+PROTOC_DOWNLOAD_PREFIX := "https://github.com/google/protobuf/releases/download"
+PROTOC_DIR := protobuf-$(PROTOC_VERSION)
+PROTOC_TARBALL := protobuf-python-$(PROTOC_VERSION).tar.gz
+PROTOC_DOWNLOAD_URI := $(PROTOC_DOWNLOAD_PREFIX)/v$(PROTOC_VERSION)/$(PROTOC_TARBALL)
+PROTOC_BUILD_TMP_DIR := "/tmp/protobuf-build-$(shell uname -s | tr '[:upper:]' '[:lower:]')"
+
+build: $(PROTOC) protos
+
+protos: $(PROTO_PB2_FILES)
+
+%_pb2.py: %.proto Makefile
+	@echo "Building protocol buffer artifacts from $<"
+	env LD_LIBRARY_PATH=$(PROTOC_LIBDIR) python -m grpc.tools.protoc \
+	    -I. \
+	    -I$(VOLTHA_BASE)/voltha/protos/third_party \
+	    --python_out=. \
+	    --grpc_python_out=. \
+	    --descriptor_set_out=$(basename $<).desc \
+	    --include_imports \
+	    --include_source_info \
+	    $<
+
+clean:
+	rm -f $(PROTO_PB2_FILES) $(PROTO_DESC_FILES)
+
+$(PROTOC):
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+	@echo "It looks like you don't have protocol buffer tools installed."
+	@echo "To install the protocol buffer toolchain, you can run:"
+	@echo "    make install-protoc"
+	@echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+
+install-protoc: $(PROTOC)
+	@echo "Downloading and installing protocol buffer support."
+	@echo "Installation will require sodo priviledges"
+	@echo "This will take a few minutes."
+	mkdir -p $(PROTOC_BUILD_TMP_DIR)
+	@echo "We ask for sudo credentials now so we can install at the end"; \
+	sudo echo "Thanks"; \
+	    cd $(PROTOC_BUILD_TMP_DIR); \
+	    wget $(PROTOC_DOWNLOAD_URI); \
+	    tar xzvf $(PROTOC_TARBALL); \
+	    cd $(PROTOC_DIR); \
+	    ./configure --prefix=$(PROTOC_PREFIX); \
+	    make; \
+	    sudo make install
+
+uninstall-protoc:
+	cd $(PROTOC_BUILD_TMP_DIR)/$(PROTOC_DIR); \
+	    sudo make uninstall
+
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal.proto b/voltha/adapters/asfvolt16_olt/protos/bal.proto
new file mode 100644
index 0000000..2b4f8b6
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/bal.proto
@@ -0,0 +1,66 @@
+//
+// Copyright 2017 the original author or authors.
+//
+// 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.
+//
+
+syntax = "proto3";
+
+import "google/protobuf/empty.proto";
+import "bal_obj.proto";
+import "bal_model_types.proto";
+import "bal_errno.proto";
+
+message BalErr {
+    BalErrno err = 1;
+}
+
+/**
+ * BAL configuration object
+ */
+message BalCfg {
+    BalObj hdr = 1;     // Transport header
+    oneof obj {
+        BalAccessTerminalCfg cfg = 2;   // Access Terminal
+        BalFlowCfg flow = 3;        // Flow
+        BalGroupCfg group = 4;
+        BalInterfaceCfg interface = 5;
+        BalPacketCfg packet = 6;
+        BalSubscriberTerminalCfg terminal = 7;
+        BalTmQueueCfg tm_queue_cfg = 8;
+        BalTmSchedCfg tm_sched_cfg = 9;
+    }
+}
+
+message BalInit {
+    string balapi_mgmt_ip_port = 1;     // IP:port of the BAL API management queue
+    string core_mgmt_ip_port = 2;       // IP:port of the core management queue
+}
+
+service Bal {
+    /**
+     * Initialize the BAL Public API internal data structures
+     **/
+    rpc BalApiInit(BalInit) returns(BalErr) {}
+    /**
+     * Un-initialize the BAL Public API internal data structures
+     **/
+    rpc BalApiFinish(google.protobuf.Empty) returns(BalErr) {}
+    /**
+     * BAL Public API Set (or modify) command.
+     *
+     * Set (or modify) the specified object instance (with implicit creation
+     * of dynamic objects) associated with the specified access-terminal device.
+     **/
+    rpc BalCfgSet(BalCfg) returns(BalErr) {}
+}
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_errno.proto b/voltha/adapters/asfvolt16_olt/protos/bal_errno.proto
new file mode 100644
index 0000000..c66133a
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_errno.proto
@@ -0,0 +1,63 @@
+//
+// Copyright 2017 the original author or authors.
+//
+// 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.
+//
+
+syntax = "proto3";
+
+/** Error codes */
+enum BalErrno
+{
+    BAL_ERR_OK                                 =  0;   /**< OK */
+    BAL_ERR_IN_PROGRESS                        = -1;   /**< Operation is in progress */
+    BAL_ERR_PARM                               = -2;   /**< Error in parameters */
+    BAL_ERR_NOMEM                              = -3;   /**< No memory */
+    BAL_ERR_NORES                              = -4;   /**< No resources */
+    BAL_ERR_INTERNAL                           = -5;   /**< Internal error */
+    BAL_ERR_NOENT                              = -6;   /**< Entry doesn't exist */
+    BAL_ERR_NODEV                              = -7;   /**< Device doesn't exist */
+    BAL_ERR_ALREADY                            = -8;   /**< Entry already exists */
+    BAL_ERR_RANGE                              = -9;   /**< Out of range */
+    BAL_ERR_PERM                               = -10;  /**< No permission to perform an operation */
+    BAL_ERR_NOT_SUPPORTED                      = -11;  /**< Operation is not supported */
+    BAL_ERR_PARSE                              = -12;  /**< Parsing error */
+    BAL_ERR_INVALID_OP                         = -13;  /**< Invalid operation */
+    BAL_ERR_IO                                 = -14;  /**< I/O error */
+    BAL_ERR_STATE                              = -15;  /**< Object is in bad state */
+    BAL_ERR_DELETED                            = -16;  /**< Object is deleted */
+    BAL_ERR_TOO_MANY                           = -17;  /**< Too many objects */
+    BAL_ERR_NO_MORE                            = -18;  /**< No more entries */
+    BAL_ERR_OVERFLOW                           = -19;  /**< Buffer overflow */
+    BAL_ERR_COMM_FAIL                          = -20;  /**< Communication failure */
+    BAL_ERR_NOT_CONNECTED                      = -21;  /**< No connection with the target system */
+    BAL_ERR_SYSCALL_ERR                        = -22;  /**< System call returned error */
+    BAL_ERR_MSG_ERROR                          = -23;  /**< Received message is insane */
+    BAL_ERR_TOO_MANY_REQS                      = -24;  /**< Too many outstanding requests */
+    BAL_ERR_TIMEOUT                            = -25;  /**< Operation timed out */
+    BAL_ERR_TOO_MANY_FRAGS                     = -26;  /**< Too many fragments */
+    BAL_ERR_NULL                               = -27;  /**< Got NULL pointer */
+    BAL_ERR_READ_ONLY                          = -28;  /**< Attempt to set read-only parameter */
+    BAL_ERR_ONU_ERR_RESP                       = -29;  /**< ONU returned an error response */
+    BAL_ERR_MANDATORY_PARM_IS_MISSING          = -30;  /**< Mandatory parameter is missing */
+    BAL_ERR_KEY_RANGE                          = -31;  /**< Key field was out of range */
+    BAL_ERR_QUEUE_EMPTY                        = -32;  /**< Rx PCIe queue empty */
+    BAL_ERR_QUEUE_FULL                         = -33;  /**< Tx PCIe queue full */
+    BAL_ERR_TOO_LONG                           = -34;  /**< Processing is taking too long; but will finish eventually */
+    BAL_ERR_INSUFFICIENT_LIST_MEM              = -35;  /**< Not enough memory was provided for variable-length lists */
+
+    BAL_ERR_OUT_OF_SYNC                        = -36;  /**< Sequence number or operation step was out of sync. */
+    BAL_ERR_CHECKSUM                           = -37;  /**< Checksum error */
+    BAL_ERR_IMAGE_TYPE                         = -38;  /**< Unsupported file/image type */
+    BAL_ERR_INCOMPLETE_TERMINATION             = -39;  /**< Incomplete premature termination */
+}
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
new file mode 100644
index 0000000..3e1817d
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_ids.proto
@@ -0,0 +1,424 @@
+//
+// Copyright 2017 the original author or authors.
+//
+// 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.
+//
+
+syntax = "proto3";
+
+/** Identifiers for all properties contained in the access_terminal_cfg group. 
+ */
+enum BalAccessTerminalCfgId
+{
+    BAL_ACCESS_TERMINAL_CFG_ID_ADMIN_STATE   = 0;    /**< Administrative state. */
+    BAL_ACCESS_TERMINAL_CFG_ID_OPER_STATUS   = 1;    /**< Operational status. */
+    BAL_ACCESS_TERMINAL_CFG_ID_IWF_MODE      = 2;    /**< Interworking function mode. */
+}
+
+/** Identifiers for all properties contained in the access_terminal_ind group. 
+ */
+enum BalAccessTerminalIndId
+{
+    BAL_ACCESS_TERMINAL_IND_ID_ADMIN_STATE   = 0;    /**< Administrative state. */
+    BAL_ACCESS_TERMINAL_IND_ID_OPER_STATUS   = 1;    /**< Operational status. */
+    BAL_ACCESS_TERMINAL_IND_ID_IWF_MODE      = 2;    /**< Interworking function mode. */
+}
+
+/** Identifiers for all properties contained in the access_terminal_key group. 
+ */
+enum BalAccessTerminalKeyId
+{
+    BAL_ACCESS_TERMINAL_KEY_ID_ACCESS_TERM_ID= 0;    /**< access_term_id. */
+}
+
+/** Identifiers for all properties contained in the flow_cfg group. 
+ */
+enum BalFlowCfgId
+{
+    BAL_FLOW_CFG_ID_ADMIN_STATE              = 0;    /**< Administrative state. */
+    BAL_FLOW_CFG_ID_OPER_STATUS              = 1;    /**< Operational status. */
+    BAL_FLOW_CFG_ID_ACCESS_INT_ID            = 2;    /**< Access Interface ID. */
+    BAL_FLOW_CFG_ID_NETWORK_INT_ID           = 3;    /**< Network Interface ID. */
+    BAL_FLOW_CFG_ID_SUB_TERM_ID              = 4;    /**< Subscriber Terminal ID. */
+    BAL_FLOW_CFG_ID_SUB_TERM_UNI_IDX         = 5;    /**< Subscriber Terminal uni port index. */
+    BAL_FLOW_CFG_ID_SVC_PORT_ID              = 6;    /**< Service Port ID. */
+    BAL_FLOW_CFG_ID_AGG_PORT_ID              = 7;    /**< Aggregate port ID. */
+    BAL_FLOW_CFG_ID_RESOLVE_MAC              = 8;    /**< Resolve mac. */
+    BAL_FLOW_CFG_ID_CLASSIFIER               = 9;    /**< Classifier. */
+    BAL_FLOW_CFG_ID_ACTION                   = 10;   /**< Action. */
+    BAL_FLOW_CFG_ID_SLA                      = 11;   /**< SLA. */
+    BAL_FLOW_CFG_ID_COOKIE                   = 12;   /**< Cookie. */
+    BAL_FLOW_CFG_ID_PRIORITY                 = 13;   /**< Priority. */
+    BAL_FLOW_CFG_ID_GROUP_ID                 = 14;   /**< Group ID. */
+    BAL_FLOW_CFG_ID_QUEUE                    = 15;   /**< Egress queue. */
+}
+
+/** Identifiers for all properties contained in the flow_ind group. 
+ */
+enum BalFlowIndId
+{
+    BAL_FLOW_IND_ID_ADMIN_STATE              = 0;    /**< Administrative state. */
+    BAL_FLOW_IND_ID_OPER_STATUS              = 1;    /**< Operational status. */
+    BAL_FLOW_IND_ID_ACCESS_INT_ID            = 2;    /**< Access interface ID. */
+    BAL_FLOW_IND_ID_NETWORK_INT_ID           = 3;    /**< Network Interface ID. */
+    BAL_FLOW_IND_ID_SUB_TERM_ID              = 4;    /**< Subscriber terminal ID. */
+    BAL_FLOW_IND_ID_SVC_PORT_ID              = 5;    /**< Service port ID. */
+    BAL_FLOW_IND_ID_AGG_PORT_ID              = 6;    /**< Aggregate port ID. */
+    BAL_FLOW_IND_ID_RESOLVE_MAC              = 7;    /**< Resolve mac. */
+    BAL_FLOW_IND_ID_BASE_TC_ID               = 8;    /**< Base TCONT ID. */
+    BAL_FLOW_IND_ID_CLASSIFIER               = 9;    /**< Classifier. */
+    BAL_FLOW_IND_ID_ACTION                   = 10;   /**< Action. */
+    BAL_FLOW_IND_ID_SLA                      = 11;   /**< SLA. */
+    BAL_FLOW_IND_ID_COOKIE                   = 12;   /**< Cookie. */
+    BAL_FLOW_IND_ID_PRIORITY                 = 13;   /**< Priority. */
+}
+
+/** Identifiers for all properties contained in the flow_key group. 
+ */
+enum BalFlowKeyId
+{
+    BAL_FLOW_KEY_ID_FLOW_ID                  = 0;    /**< Flow ID. */
+    BAL_FLOW_KEY_ID_FLOW_TYPE                = 1;    /**< Flow type. */
+}
+
+/** Identifiers for all properties contained in the flow_stat group. 
+ */
+enum BalFlowStatId
+{
+    BAL_FLOW_STAT_ID_RX_PACKETS              = 0;    /**< Received packets. */
+    BAL_FLOW_STAT_ID_RX_BYTES                = 1;    /**< Received bytes. */
+    BAL_FLOW_STAT_ID_TX_PACKETS              = 2;    /**< Transmitted packets. */
+    BAL_FLOW_STAT_ID_TX_BYTES                = 3;    /**< Transmitted bytes. */
+}
+
+/** Identifiers for all properties contained in the group_cfg group. 
+ */
+enum BalGroupCfgId
+{
+    BAL_GROUP_CFG_ID_MEMBERS_CMD             = 0;    /**< Membership operation commands. */
+    BAL_GROUP_CFG_ID_MEMBERS                 = 1;    /**< Member. */
+    BAL_GROUP_CFG_ID_COOKIE                  = 2;    /**< Application cookie. */
+    BAL_GROUP_CFG_ID_FLOWS                   = 3;    /**< List of flows associated with the group . */
+    BAL_GROUP_CFG_ID_OWNER                   = 4;    /**< Owner of the group. */
+}
+
+/** Identifiers for all properties contained in the group_key group. 
+ */
+enum BalGroupKeyId
+{
+    BAL_GROUP_KEY_ID_GROUP_ID                = 0;    /**< Group ID. */
+}
+
+/** Identifiers for all properties contained in the interface_cfg group. 
+ */
+enum BalInterfaceCfgId
+{
+    BAL_INTERFACE_CFG_ID_ADMIN_STATE         = 0;            /**< Administrative state. */
+    BAL_INTERFACE_CFG_ID_OPER_STATUS         = 1;            /**< Operational status. */
+    BAL_INTERFACE_CFG_ID_MIN_DATA_AGG_PORT_ID= 2;            /**< Minimum aggregate port ID. */
+    BAL_INTERFACE_CFG_ID_MIN_DATA_SVC_PORT_ID= 3;            /**< Minimum service port ID. */
+    BAL_INTERFACE_CFG_ID_TRANSCEIVER_TYPE    = 4;            /**< Transceiver type. */
+    BAL_INTERFACE_CFG_ID_DS_MISS_MODE        = 5;            /**< Downstream unknown packet action. */
+    BAL_INTERFACE_CFG_ID_MTU                 = 6;            /**< MTU. */
+    BAL_INTERFACE_CFG_ID_FLOW_CONTROL        = 7;            /**< Flow control. */
+    BAL_INTERFACE_CFG_ID_DS_TM               = 8;            /**< Downstream scheduler and shaper. */
+    BAL_INTERFACE_CFG_ID_US_TM               = 9;            /**< Upstream scheduler and shaper. */
+    BAL_INTERFACE_CFG_ID_SUB_TERM_ID_LIST    = 10;           /**< Sub-term id list. */
+}
+
+/** Identifiers for all properties contained in the interface_ind group. 
+ */
+enum BalInterfaceIndId
+{
+    BAL_INTERFACE_IND_ID_ADMIN_STATE         = 0;            /**< Administrative state. */
+    BAL_INTERFACE_IND_ID_OPER_STATUS         = 1;            /**< Operational status. */
+    BAL_INTERFACE_IND_ID_MIN_DATA_AGG_PORT_ID= 2;            /**< Minimum aggregate port ID. */
+    BAL_INTERFACE_IND_ID_MIN_DATA_SVC_PORT_ID= 3;            /**< Minimum service port ID. */
+    BAL_INTERFACE_IND_ID_TRANSCEIVER_TYPE    = 4;            /**< Transceiver type. */
+    BAL_INTERFACE_IND_ID_DS_MISS_MODE        = 5;            /**< Downstream unknown packet action. */
+    BAL_INTERFACE_IND_ID_MTU                 = 6;            /**< MTU. */
+    BAL_INTERFACE_IND_ID_FLOW_CONTROL        = 7;            /**< Flow control. */
+    BAL_INTERFACE_IND_ID_DS_TM               = 8;            /**< Downstream scheduler and shaper. */
+    BAL_INTERFACE_IND_ID_US_TM               = 9;            /**< Upstream scheduler and shaper. */
+}
+
+/** Identifiers for all properties contained in the interface_key group. 
+ */
+enum BalInterfaceKeyId
+{
+    BAL_INTERFACE_KEY_ID_INTF_ID             = 0;            /**< intf_id. */
+    BAL_INTERFACE_KEY_ID_INTF_TYPE           = 1;            /**< intf_type. */
+}
+
+/** Identifiers for all properties contained in the interface_stat group. 
+ */
+enum BalInterfaceStatId
+{
+    BAL_INTERFACE_STAT_ID_RX_PACKETS         = 0;            /**< Recieved packets. */
+    BAL_INTERFACE_STAT_ID_RX_BYTES           = 1;            /**< Received bytes. */
+    BAL_INTERFACE_STAT_ID_TX_PACKETS         = 2;            /**< Transmitted packets. */
+    BAL_INTERFACE_STAT_ID_TX_BYTES           = 3;            /**< Transmitted bytes. */
+}
+
+/** Identifiers for all properties contained in the packet_cfg group. 
+ */
+enum BalPacketCfgId
+{
+    BAL_PACKET_CFG_ID_FLOW_ID                = 0;            /**< Flow Id. */
+    BAL_PACKET_CFG_ID_FLOW_TYPE              = 1;            /**< Flow Type. */
+    BAL_PACKET_CFG_ID_INTF_ID                = 2;            /**< Interface ID. */
+    BAL_PACKET_CFG_ID_INTF_TYPE              = 3;            /**< Interface Type. */
+    BAL_PACKET_CFG_ID_SVC_PORT               = 4;            /**< Service Port. */
+    BAL_PACKET_CFG_ID_FLOW_COOKIE            = 5;            /**< Flow Cookie. */
+    BAL_PACKET_CFG_ID_PKT                    = 6;            /**< Packet Data. */
+}
+
+/** Identifiers for all properties contained in the packet_ind group. 
+ */
+enum BalPacketIndId
+{
+    BAL_PACKET_IND_ID_FLOW_ID                = 0;            /**< Flow Id. */
+    BAL_PACKET_IND_ID_FLOW_TYPE              = 1;            /**< Flow Type. */
+    BAL_PACKET_IND_ID_INTF_ID                = 2;            /**< Interface ID. */
+    BAL_PACKET_IND_ID_INTF_TYPE              = 3;            /**< Interface Type. */
+    BAL_PACKET_IND_ID_SVC_PORT               = 4;            /**< Service Port. */
+    BAL_PACKET_IND_ID_FLOW_COOKIE            = 5;            /**< Flow Cookie. */
+    BAL_PACKET_IND_ID_PKT                    = 6;            /**< Packet Data. */
+}
+
+/** Identifiers for all properties contained in the packet_key group. 
+ */
+enum BalPacketKeyId
+{
+    BAL_PACKET_KEY_ID_RESERVED               = 0;            /**< Reserved key field. */
+    BAL_PACKET_KEY_ID_PACKET_SEND_DEST       = 1;            /**< Packet destination. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_cfg 
+ * group. 
+ */
+enum BalSubscriberTerminalCfgId
+{
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_ADMIN_STATE       = 0;    /**< Administrative state. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_OPER_STATUS       = 1;    /**< Operational status. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_SERIAL_NUMBER     = 2;    /**< Serial number. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_PASSWORD          = 3;    /**< Password. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_REGISTRATION_ID   = 4;    /**< Registration id. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID       = 5;    /**< Service port ID. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_MAC_ADDRESS       = 6;    /**< MAC address. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_DS_TM             = 7;    /**< Downstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_US_TM             = 8;    /**< Upstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_SVC_PORT_ID_LIST  = 9;    /**< svc_port_id list. */
+    BAL_SUBSCRIBER_TERMINAL_CFG_ID_AGG_PORT_ID_LIST  = 10;   /**< agg_port_id list. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_ind 
+ * group. 
+ */
+enum BalSubscriberTerminalIndId
+{
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_ADMIN_STATE       = 0;    /**< Administrative state. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_OPER_STATUS       = 1;    /**< Operational status. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SERIAL_NUMBER     = 2;    /**< Serial number. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_PASSWORD          = 3;    /**< Password. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_REGISTRATION_ID   = 4;    /**< Registration id. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_SVC_PORT_ID       = 5;    /**< Service port ID. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_MAC_ADDRESS       = 6;    /**< MAC address. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_DS_TM             = 7;    /**< Downstream scheduler and shaper. */
+    BAL_SUBSCRIBER_TERMINAL_IND_ID_US_TM             = 8;    /**< Upstream scheduler and shaper. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_key 
+ * group. 
+ */
+enum BalSubscriberTerminalKeyId
+{
+    BAL_SUBSCRIBER_TERMINAL_KEY_ID_SUB_TERM_ID       = 0;    /**< sub_term_id. */
+    BAL_SUBSCRIBER_TERMINAL_KEY_ID_INTF_ID           = 1;    /**< intf_id. */
+}
+
+/** Identifiers for all properties contained in the subscriber_terminal_stat 
+ * group. 
+ */
+enum BalSubscriberTerminalStatId
+{
+    BAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_PACKETS       = 0;    /**< Received  packets. */
+    BAL_SUBSCRIBER_TERMINAL_STAT_ID_RX_BYTES         = 1;    /**< Received bytes. */
+    BAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_PACKETS       = 2;    /**< Transmitted packets. */
+    BAL_SUBSCRIBER_TERMINAL_STAT_ID_TX_BYTES         = 3;    /**< Transmitted bytes. */
+}
+
+/** Identifiers for all properties contained in the tm_queue_cfg group. 
+ */
+enum BalTmQueueCfgId
+{
+    BAL_TM_QUEUE_CFG_ID_PRIORITY                     = 0;    /**< priority. */
+    BAL_TM_QUEUE_CFG_ID_WEIGHT                       = 1;    /**< weight. */
+    BAL_TM_QUEUE_CFG_ID_RATE                         = 2;    /**< rate. */
+    BAL_TM_QUEUE_CFG_ID_BAC                          = 3;    /**< bac. */
+    BAL_TM_QUEUE_CFG_ID_CREATION_MODE                = 4;    /**< creation_mode. */
+    BAL_TM_QUEUE_CFG_ID_REF_COUNT                    = 5;    /**< ref_count. */
+}
+
+/** Identifiers for all properties contained in the tm_queue_ind group. 
+ */
+enum BalTmQueueIndId
+{
+    BAL_TM_QUEUE_IND_ID_RET                          = 0;    /**< ret. */
+}
+
+/** Identifiers for all properties contained in the tm_queue_key group. 
+ */
+enum BalTmQueueKeyId
+{
+    BAL_TM_QUEUE_KEY_ID_SCHED_ID                     = 0;    /**< sched_id. */
+    BAL_TM_QUEUE_KEY_ID_SCHED_DIR                    = 1;    /**< sched dir. */
+    BAL_TM_QUEUE_KEY_ID_ID                           = 2;    /**< id. */
+}
+
+/** Identifiers for all properties contained in the tm_queue_stat group. 
+ */
+enum BalTmQueueStatId
+{
+    BAL_TM_QUEUE_STAT_ID_PACKETS_OK                  = 0;    /**< packets_ok. */
+    BAL_TM_QUEUE_STAT_ID_BYTES_OK                    = 1;    /**< bytes_ok. */
+    BAL_TM_QUEUE_STAT_ID_PACKETS_DISCARDED           = 2;    /**< packets_discarded. */
+    BAL_TM_QUEUE_STAT_ID_BYTES_DISCARDED             = 3;    /**< bytes_discarded. */
+}
+
+/** Identifiers for all properties contained in the tmSched_cfg group. 
+ */
+enum BalTmSchedCfgId
+{
+    BAL_TM_SCHED_CFG_ID_OWNER                        = 0;    /**< owner. */
+    BAL_TM_SCHED_CFG_ID_SCHED_TYPE                   = 1;    /**< type. */
+    BAL_TM_SCHED_CFG_ID_SCHED_PARENT                 = 2;    /**< parent. */
+    BAL_TM_SCHED_CFG_ID_SCHED_CHILD_TYPE             = 3;    /**< child_type. */
+    BAL_TM_SCHED_CFG_ID_RATE                         = 4;    /**< rate. */
+    BAL_TM_SCHED_CFG_ID_TCONT_SLA                    = 5;    /**< tcont_sla. */
+    BAL_TM_SCHED_CFG_ID_CREATION_MODE                = 6;    /**< creation_mode. */
+    BAL_TM_SCHED_CFG_ID_QUEUES                       = 7;    /**< queues. */
+    BAL_TM_SCHED_CFG_ID_SUB_SCHEDS                   = 8;    /**< sub_scheds. */
+    BAL_TM_SCHED_CFG_ID_NUM_PRIORITIES               = 9;    /**< num_priorities. */
+}
+
+/** Identifiers for all properties contained in the tm_sched_ind group. 
+ */
+enum BalTmSchedIndId
+{
+    BAL_TM_SCHED_IND_ID_RET                          = 0;    /**< ret. */
+}
+
+/** Identifiers for all properties contained in the tm_sched_key group. 
+ */
+enum BalTmSchedKeyId
+{
+    BAL_TM_SCHED_KEY_ID_DIR                          = 0;    /**< dir. */
+    BAL_TM_SCHED_KEY_ID_ID                           = 1;    /**< id. */
+}
+
+/** Identifiers for all objects in the system. 
+ */
+enum BalObjId
+{
+    BAL_OBJ_ID_ACCESS_TERMINAL                       = 0;    /**< BAL Access Terminal */
+    BAL_OBJ_ID_FLOW                                  = 1;    /**< BAL Flow */
+    BAL_OBJ_ID_GROUP                                 = 2;    /**< BAL Group */
+    BAL_OBJ_ID_INTERFACE                             = 3;    /**< BAL Interface */
+    BAL_OBJ_ID_PACKET                                = 4;    /**< packet */
+    BAL_OBJ_ID_SUBSCRIBER_TERMINAL                   = 5;    /**< BAL Subscriber Terminal */
+    BAL_OBJ_ID_TM_QUEUE                              = 6;    /**< tm_queue */
+    BAL_OBJ_ID_TM_SCHED                              = 7;    /**< tm_sched */
+}
+
+/** Identifiers for all possible groups under all objects in the system. 
+ */
+enum BalObjGroupId
+{
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_KEY             = 0;    /**< BAL Access Terminal - key */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_CFG             = 1;    /**< BAL Access Terminal - cfg */
+    BAL_OBJ_GROUP_ID_ACCESS_TERMINAL_IND             = 2;    /**< BAL Access Terminal - Access Terminal Indication */
+    BAL_OBJ_GROUP_ID_FLOW_KEY                        = 3;    /**< BAL Flow - key */
+    BAL_OBJ_GROUP_ID_FLOW_CFG                        = 4;    /**< BAL Flow - cfg */
+    BAL_OBJ_GROUP_ID_FLOW_STAT                       = 5;    /**< BAL Flow - stat */
+    BAL_OBJ_GROUP_ID_FLOW_IND                        = 6;    /**< BAL Flow - Flow Indication */
+    BAL_OBJ_GROUP_ID_GROUP_KEY                       = 7;    /**< BAL Group - key */
+    BAL_OBJ_GROUP_ID_GROUP_CFG                       = 8;    /**< BAL Group - cfg */
+    BAL_OBJ_GROUP_ID_INTERFACE_KEY                   = 9;    /**< BAL Interface - key */
+    BAL_OBJ_GROUP_ID_INTERFACE_CFG                   = 10;   /**< BAL Interface - cfg */
+    BAL_OBJ_GROUP_ID_INTERFACE_STAT                  = 11;   /**< BAL Interface - stat */
+    BAL_OBJ_GROUP_ID_INTERFACE_IND                   = 12;   /**< BAL Interface - Interface Indication */
+    BAL_OBJ_GROUP_ID_PACKET_KEY                      = 13;   /**< packet - key */
+    BAL_OBJ_GROUP_ID_PACKET_CFG                      = 14;   /**< packet - cfg */
+    BAL_OBJ_GROUP_ID_PACKET_IND                      = 15;   /**< packet - Packet indication */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_KEY         = 16;   /**< BAL Subscriber Terminal - key */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_CFG         = 17;   /**< BAL Subscriber Terminal - cfg */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_STAT        = 18;   /**< BAL Subscriber Terminal - stat */
+    BAL_OBJ_GROUP_ID_SUBSCRIBER_TERMINAL_IND         = 19;   /**< BAL Subscriber Terminal - Subscriber Terminal Indication */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_KEY                    = 20;   /**< tm_queue - key */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_CFG                    = 21;   /**< tm_queue - cfg */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_STAT                   = 22;   /**< tm_queue - stat */
+    BAL_OBJ_GROUP_ID_TM_QUEUE_IND                    = 23;   /**< tm_queue - Tm Queue Indication */
+    BAL_OBJ_GROUP_ID_TM_SCHED_KEY                    = 24;   /**< tm_sched - key */
+    BAL_OBJ_GROUP_ID_TM_SCHED_CFG                    = 25;   /**< tm_sched - cfg */
+    BAL_OBJ_GROUP_ID_TM_SCHED_IND                    = 26;   /**< tm_sched - Tm Sched Indication */
+}
+
+/** List of all access_terminal groups of type auto. 
+ */
+enum BalAccessTerminalAutoId
+{
+    BAL_ACCESS_TERMINAL_AUTO_ID_IND                  = 0;    /**< Access Terminal Indication. */
+}
+
+/** List of all flow groups of type auto. 
+ */
+enum BalFlowAutoId
+{
+    BAL_FLOW_AUTO_ID_IND                             = 0;    /**< Flow Indication. */
+}
+
+/** List of all interface groups of type auto. 
+ */
+enum BalInterfaceAutoId
+{
+    BAL_INTERFACE_AUTO_ID_IND                        = 0;    /**< Interface Indication. */
+}
+
+/** List of all packet groups of type auto. 
+ */
+enum BalPacketAutoId
+{
+    BAL_PACKET_AUTO_ID_IND                           = 0;    /**< Packet indication. */
+}
+
+/** List of all subscriber_terminal groups of type auto. 
+ */
+enum BalSubscriberTerminalAutoId
+{
+    BAL_SUBSCRIBER_TERMINAL_AUTO_ID_IND              = 0;    /**< Subscriber Terminal Indication. */
+}
+
+/** List of all tm_queue groups of type auto. 
+ */
+enum BalTmQueueAutoId
+{
+    BAL_TM_QUEUE_AUTO_ID_IND                         = 0;    /**< Tm Queue Indication. */
+}
+
+/** List of all tm_sched groups of type auto. 
+ */
+enum BalTmSchedAutoId
+{
+    BAL_TM_SCHED_AUTO_ID_IND                         = 0;    /**< Tm Sched Indication. */
+}
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
new file mode 100644
index 0000000..2b417c6
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_model_types.proto
@@ -0,0 +1,1065 @@
+//
+// Copyright 2017 the original author or authors.
+//
+// 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.
+//
+
+syntax = "proto3";
+
+import "bal_obj.proto";
+
+/** action ID.
+ */
+enum BalActionId {
+    BAL_ACTION_ID_NONE           = 0;
+    BAL_ACTION_ID_CMDS_BITMASK   = 0x0001;           /**< Commands bitmask. */
+    BAL_ACTION_ID_O_VID          = 0x0002;           /**< Outer vid. */
+    BAL_ACTION_ID_O_PBITS        = 0x0004;           /**< Outer pbits. */
+    BAL_ACTION_ID_O_TPID         = 0x0008;           /**< Outer tpid. */
+    BAL_ACTION_ID_I_VID          = 0x0010;           /**< Inner vid. */
+    BAL_ACTION_ID_I_PBITS        = 0x0020;           /**< Inner pbits. */
+    BAL_ACTION_ID_I_TPID         = 0x0040;           /**< Inner tpid. */
+    BAL_ACTION_ID_ALL            = 0x007F;           /**< All fields */
+}
+
+/** actionCmdId.
+ */
+enum BalActionCmdId {
+    BAL_ACTION_CMD_ID_NONE               = 0;
+    BAL_ACTION_CMD_ID_ADD_OUTER_TAG      = 0x0001;   /**< Add outer tag. */
+    BAL_ACTION_CMD_ID_REMOVE_OUTER_TAG   = 0x0002;   /**< Remove outer tag. */
+    BAL_ACTION_CMD_ID_XLATE_OUTER_TAG    = 0x0004;   /**< Translate outer tag. */
+    BAL_ACTION_CMD_ID_XLATE_TWO_TAGS     = 0x0008;   /**< Translate two tags. */
+    BAL_ACTION_CMD_ID_DISCARD_DS_BCAST   = 0x0010;   /**< Used to satisfy TR-156 Issue 3 R-111 */
+    BAL_ACTION_CMD_ID_DISCARD_DS_UNKNOWN = 0x0020;   /**< Used to satisfy TR-156 Issue 3 R-109 */
+    BAL_ACTION_CMD_ID_ADD_TWO_TAGS       = 0x0040;   /**< Add two tags. */
+    BAL_ACTION_CMD_ID_REMOVE_TWO_TAGS    = 0x0080;   /**< Remove two tags. */
+    BAL_ACTION_CMD_ID_REMARK_PBITS       = 0x0100;   /**< Set the outer tag pbits */
+    BAL_ACTION_CMD_ID_COPY_PBITS         = 0x0200;   /**< Copy the inner pbits to outer pbits */
+    BAL_ACTION_CMD_ID_REVERSE_COPY_PBITS = 0x0400;   /**< Copy the outer pbits to inner pbits */
+    BAL_ACTION_CMD_ID_DSCP_TO_PBITS      = 0x0800;   /**< Copy the L4 DSCP to outer pbits */
+    BAL_ACTION_CMD_ID_TRAP_TO_HOST       = 0x1000;   /**< Not a valid action for a group object member */
+}
+
+/** classifier ID.
+ */
+enum BalClassifierId {
+    BAL_CLASSIFIER_ID_NONE               = 0;
+    BAL_CLASSIFIER_ID_O_TPID             = 0x0001;   /**< Outer TPID of the packet to be classified */
+    BAL_CLASSIFIER_ID_O_VID              = 0x0002;   /**< Outer VID of the packet to be classified */
+    BAL_CLASSIFIER_ID_I_TPID             = 0x0004;   /**< Inner TPID of the packet to be classified */
+    BAL_CLASSIFIER_ID_I_VID              = 0x0008;   /**< Inner VID of the packet to be classified */
+    BAL_CLASSIFIER_ID_O_PBITS            = 0x0010;   /**< Outer PBITS of the packet to be classified */
+    BAL_CLASSIFIER_ID_I_PBITS            = 0x0020;   /**< Inner PBITS of the packet to be classified */
+    BAL_CLASSIFIER_ID_ETHER_TYPE         = 0x0040;   /**< Ethertype of the packet to be classified */
+    BAL_CLASSIFIER_ID_DST_MAC            = 0x0080;   /**< Destination MAC address of the packet to be classified */
+    BAL_CLASSIFIER_ID_SRC_MAC            = 0x0100;   /**< Source MAC address of the packet to be classified */
+    BAL_CLASSIFIER_ID_IP_PROTO           = 0x0200;   /**< IP protocol of the packet to be classified */
+    BAL_CLASSIFIER_ID_DST_IP             = 0x0400;   /**< Destination IP address of the packet to be classified */
+    BAL_CLASSIFIER_ID_SRC_IP             = 0x0800;   /**< Source IP address of the packet to be classified */
+    BAL_CLASSIFIER_ID_SRC_PORT           = 0x1000;   /**< Source port of the packet to be classified */
+    BAL_CLASSIFIER_ID_DST_PORT           = 0x2000;   /**< Destination port of the packet to be classified */
+    BAL_CLASSIFIER_ID_PKT_TAG_TYPE       = 0x4000;   /**< The tag type of the ingress packets */
+    BAL_CLASSIFIER_ID_ALL                = 0x7FFF;   /**< All fields */
+}
+
+/** Packet tag type.
+ */
+enum BalPktTagType {
+    BAL_PKT_TAG_TYPE_NONE                = 0;
+    BAL_PKT_TAG_TYPE_UNTAGGED            = 0x0001;   /**< Untagged. */
+    BAL_PKT_TAG_TYPE_SINGLE_TAG          = 0x0002;   /**< Single tag. */
+    BAL_PKT_TAG_TYPE_DOUBLE_TAG          = 0x0004;   /**< Double tag. */
+}
+
+/** Generic enable/disable enumeration
+ */
+enum BalControl {
+    BAL_CONTROL_DISABLE                  = 0;        /**< disable. */
+    BAL_CONTROL_ENABLE                   = 1;        /**< enable. */
+    BAL_CONTROL__NUM_OF                  = 2;	/**< Number of enum entries, not an entry itself. */
+}
+
+/** Destination type.
+ */
+enum BalDestType {
+    BAL_DEST_TYPE_INVALID                = 0;
+    BAL_DEST_TYPE_NNI                    = 1;        /**< for packets being sent to the NNI */
+    BAL_DEST_TYPE_SUB_TERM               = 2;        /**< for packets being sent to a subscriber terminal */
+    BAL_DEST_TYPE_HOST                   = 3;        /**<  for packet indications received from NNI or SUB_TERM and being sent to the host */
+}
+
+/** Downstrean action for unknown packets.
+ */
+enum BalDsMissMode {
+    BAL_DS_MISS_MODE_DISCARD             = 0;        /**< Discard. */
+    BAL_DS_MISS_MODE_BROADCAST           = 1;        /**< Broadcast. */
+    BAL_DS_MISS_MODE_VID                 = 2;        /**< Vid. */
+    BAL_DS_MISS_MODE__NUM_OF             = 3;        /**< Number of enum entries, not an entry itself. */
+}
+
+/** Extra BW Eligibility Type
+ */
+enum BalExtraBwEligibilityType
+{
+    BAL_EXTRA_BW_ELIGIBILITY_TYPE_NONE       = 0;    /**< None */
+    BAL_EXTRA_BW_ELIGIBILITY_TYPE_NOT_ASSURED= 1;    /**< Not assured */
+    BAL_EXTRA_BW_ELIGIBILITY_TYPE_BEST_EFFORT= 2;    /**< Best effort */
+    BAL_EXTRA_BW_ELIGIBILITY_TYPE__NUM_OF    = 3;    /**< Number of enum entries, not an entry itself. */
+}
+
+/** Flow Type.
+ */
+enum BalFlowType {
+    BAL_FLOW_TYPE_INVALID                    = 0;
+    BAL_FLOW_TYPE_UPSTREAM                   = 1;    /**< Upstream flow */
+    BAL_FLOW_TYPE_DOWNSTREAM                 = 2;    /**< Downstream Flow */
+    BAL_FLOW_TYPE_BROADCAST                  = 3;    /**< Broadcast Flow */
+    BAL_FLOW_TYPE_MULTICAST                  = 4;    /**< Multicast Flow */
+}
+
+/** Member operation type.
+ */
+enum BalGroupMemberCmd
+{
+    BAL_GROUP_MEMBER_CMD_INVALID             = 0;
+    BAL_GROUP_MEMBER_CMD_ADD_MEMBERS         = 1;    /**< Add new members. */
+    BAL_GROUP_MEMBER_CMD_REM_MEMBERS         = 2;    /**< Remove existing members. */
+    BAL_GROUP_MEMBER_CMD_SET_MEMBERS         = 3;    /**< Replace members with new set. */
+}
+
+/** owner of the group
+ */
+enum BalGroupOwner
+{
+    BAL_GROUP_OWNER_NONE                     = 0;    /**< no owner */
+    BAL_GROUP_OWNER_MULTICAST                = 1;    /**< used as multicast group */
+    BAL_GROUP_OWNER_UNICAST                  = 2;    /**< used as unicast group */
+    BAL_GROUP_OWNER__NUM_OF                  = 3;    /**< Number of enum entries, not an entry itself. */
+}
+
+/** Interface type.
+ */
+enum BalIntfType {
+    BAL_INTF_TYPE_NNI                        = 0;    /**< NNI Interface. */
+    BAL_INTF_TYPE_PON                        = 1;    /**< POIN Interface. */
+    BAL_INTF_TYPE__NUM_OF                    = 2;    /**< Number of enum entries, not an entry itself. */
+}
+
+/** Interworking Function Mode.
+ */
+enum BalIwfMode {
+    BAL_IWF_MODE_DIRECT_MAPPING              = 0;    /**< Direct mapping. */
+    BAL_IWF_MODE_PER_FLOW                    = 1;    /**< Per flow . */
+    BAL_IWF_MODE__NUM_OF                     = 2;    /**< Number of enum entries, not an entry itself. */
+}
+
+/** SLA ID.
+ */
+enum BalSlaId {
+    BAL_SLA_ID_NONE                          = 0;
+    BAL_SLA_ID_MIN_RATE                      = 0x0001;   /**< The minimal rate for this flow, in kilobits per second (optional) */
+    BAL_SLA_ID_MAX_RATE                      = 0x0002;   /**< The maximum rate for this flow, in kilobits per second (optional) */
+    BAL_SLA_ID_ALL                           = 0x0003;   /**< All fields */
+}
+
+/** Admin state values for access terminal object
+ */
+enum BalState {
+    BAL_STATE_INVALID                        = 0;
+    BAL_STATE_UP                             = 1;        /**< Admin state up */
+    BAL_STATE_DOWN                           = 2;        /**< Admin state down */
+    BAL_STATE_TESTING                        = 3;        /**< Admin state testing */
+}
+
+/** Oper status values
+ */
+enum BalStatus {
+    BAL_STATUS_INVALID                       = 0;
+    BAL_STATUS_UP                            = 1;        /**< Oper status up */
+    BAL_STATUS_DOWN                          = 2;        /**< Oper status down */
+    BAL_STATUS_TESTING                       = 3;        /**< Oper status testing */
+    BAL_STATUS_NOT_PRESENT                   = 4;        /**< Oper status not present */
+    BAL_STATUS_LOWER_LAYER_DOWN              = 5;        /**< Oper status lower layer down */
+    BAL_STATUS_UNKNOWN                       = 6;        /**< Oper status unknown */
+}
+
+/** Buffer Admission Control Type
+ */
+enum BalTmBacType {
+    BAL_TM_BAC_TYPE_TAILDROP                 = 0;        /**< Taildrop  */
+    BAL_TM_BAC_TYPE_WTAILDROP                = 1;        /**< Weighted taildrop */
+    BAL_TM_BAC_TYPE_RED                      = 2;        /**< Random Early Discard */
+    BAL_TM_BAC_TYPE_WRED                     = 3;        /**< Weighted Random Early Discard */
+    BAL_TM_BAC_TYPE__NUM_OF                  = 4;        /**< Number of enum entries, not an entry itself. */
+}
+
+/** TM Creation Mode
+ */
+enum BalTmCreationMode {
+    BAL_TM_CREATION_MODE_MANUAL              = 0;            /**< tm object created manually */
+    BAL_TM_CREATION_MODE_AUTO                = 1;            /**< tm object created automatically */
+    BAL_TM_CREATION_MODE__NUM_OF             = 2;            /**< Number of enum entries, not an entry itself. */
+}
+
+/** Scheduling Level for the Children TM
+ */
+enum BalTmSchedChildType {
+    BAL_TM_SCHED_CHILD_TYPE_QUEUE            = 0;            /**< Queue-level scheduler */
+    BAL_TM_SCHED_CHILD_TYPE_SCHED            = 1;            /**< Scheduler-level scheduler */
+    BAL_TM_SCHED_CHILD_TYPE__NUM_OF          = 2;            /**< Number of enum entries, not an entry itself. */
+}
+
+/** Traffic Direction
+ */
+enum BalTmSchedDir {
+    BAL_TM_SCHED_DIR_INVALID                 = 0;
+    BAL_TM_SCHED_DIR_US                      = 1;            /**< Upstream */
+    BAL_TM_SCHED_DIR_DS                      = 2;            /**< Downstream */
+}
+
+/** TM Scheduler Owner Type
+ */
+enum BalTmSchedOwnerType
+{
+    BAL_TM_SCHED_OWNER_TYPE_UNDEFINED        = 0;            /**< Undefined */
+    BAL_TM_SCHED_OWNER_TYPE_INTERFACE        = 1;            /**< Interface */
+    BAL_TM_SCHED_OWNER_TYPE_SUB_TERM         = 2;            /**< Subscriber terminal */
+    BAL_TM_SCHED_OWNER_TYPE_AGG_PORT         = 3;            /**< TM scheduler is owned by aggregation port */
+    BAL_TM_SCHED_OWNER_TYPE_UNI              = 4;            /**< TM scheduler is owned by UNI port */
+    BAL_TM_SCHED_OWNER_TYPE_VIRTUAL          = 5;            /**< Other unspecified owner */
+    BAL_TM_SCHED_OWNER_TYPE__NUM_OF          = 6;            /**< Number of enum entries, not an entry itself. */
+}
+
+/** TmSchedOwner aggPort ID.
+ */
+enum BalTmSchedOwnerAggPortId
+{
+    BAL_TM_SCHED_OWNER_AGG_PORT_ID_NONE          = 0;
+    BAL_TM_SCHED_OWNER_AGG_PORT_ID_INTF_ID       = 0x0001;   /**< PON interface id */
+    BAL_TM_SCHED_OWNER_AGG_PORT_ID_SUB_TERM_ID   = 0x0002;   /**< Subscriber terminal id */
+    BAL_TM_SCHED_OWNER_AGG_PORT_ID_AGG_PORT_ID   = 0x0004;   /**< Aggregation port id */
+    BAL_TM_SCHED_OWNER_AGG_PORT_ID_ALL           = 0x0007;   /**< All fields */
+}
+
+/** TmSchedParent ID.
+ */
+enum BalTmSchedParentId
+{
+    BAL_TM_SCHED_PARENT_ID_NONE                  = 0;
+    BAL_TM_SCHED_PARENT_ID_SCHED_ID              = 0x0001;   /**< Parent scheduler id */
+    BAL_TM_SCHED_PARENT_ID_PRIORITY              = 0x0002;   /**< Priority */
+    BAL_TM_SCHED_PARENT_ID_WEIGHT                = 0x0004;   /**< Weight */
+    BAL_TM_SCHED_PARENT_ID_ALL                   = 0x0007;   /**< All fields */
+}
+
+/** Scheduler Type
+ */
+enum BalTmSchedType
+{
+    BAL_TM_SCHED_TYPE_NONE                       = 0;        /**< NO scheduling */
+    BAL_TM_SCHED_TYPE_WFQ                        = 1;        /**< Weighted Fair Queue */
+    BAL_TM_SCHED_TYPE_SP                         = 2;        /**< Strict Priority */
+    BAL_TM_SCHED_TYPE_SP_WFQ                     = 3;        /**< Hybrid SP + WFQ */
+    BAL_TM_SCHED_TYPE__NUM_OF                    = 4;        /**< Number of enum entries, not an entry itself. */
+}
+
+/** TmShaping ID.
+ */
+enum BalTmShapingId
+{
+    BAL_TM_SHAPING_ID_NONE                       = 0;
+    BAL_TM_SHAPING_ID_SBR                        = 0x0001;   /**< Sustained Bit Rate (kbps) */
+    BAL_TM_SHAPING_ID_PBR                        = 0x0002;   /**< Peak Bit Rate (kbps) */
+    BAL_TM_SHAPING_ID_BURST                      = 0x0004;   /**< Max Burst Bytes at Peak Bit Rate */
+    BAL_TM_SHAPING_ID_ALL                        = 0x0007;   /**< All fields */
+}
+
+/** TmTcontSla ID.
+ */
+enum BalTmTcontSlaId
+{
+    BAL_TM_TCONT_SLA_ID_NONE                     = 0;
+    BAL_TM_TCONT_SLA_ID_EXTRA_BW_ELIG            = 0x0001;   /**< Extra BW eligibility type */
+    BAL_TM_TCONT_SLA_ID_NRT_CBR                  = 0x0002;   /**< NRT CBR */
+    BAL_TM_TCONT_SLA_ID_RT_CBR                   = 0x0004;   /**< RT_CBR */
+    BAL_TM_TCONT_SLA_ID_RT_PROFILE               = 0x0008;   /**< RT Profile */
+    BAL_TM_TCONT_SLA_ID_NRT_PROFILE              = 0x0010;   /**< NRT Profile */
+    BAL_TM_TCONT_SLA_ID_ALL                      = 0x001F;   /**< All fields */
+}
+
+/** Transceiver types
+ */
+enum BalTrxType
+{
+    BAL_TRX_TYPE_GPON_SPS_43_48                  = 0;        /**< gpon_sps_43_48. */
+    BAL_TRX_TYPE_GPON_SPS_SOG_4321               = 1;        /**< gpon_sps_sog_4321. */
+    BAL_TRX_TYPE_GPON_LTE_3680_M                 = 2;        /**< gpon_lte_3680_m. */
+    BAL_TRX_TYPE_GPON_SOURCE_PHOTONICS           = 3;        /**< gpon_source_photonics. */
+    BAL_TRX_TYPE_GPON_LTE_3680_P                 = 4;        /**< gpon_lte_3680_p. */
+    BAL_TRX_TYPE_XGPON_LTH_7222_PC               = 5;        /**< xgpon_lth_7222_pc. */
+    BAL_TRX_TYPE_XGPON_LTH_7226_PC               = 6;        /**< xgpon_lth_7226_pc. */
+    BAL_TRX_TYPE_XGPON_LTH_5302_PC               = 7;        /**< xgpon_lth_5302_pc. */
+    BAL_TRX_TYPE__NUM_OF                         = 8;        /**< Number of enum entries, not an entry itself. */
+}
+
+/** action.
+ */
+message BalAction
+{
+    BalActionId presence_mask = 1;     /**< Presence Mask. */
+    BalActionCmdId cmds_bitmask = 2;  /**< Commands bitmask. */
+    uint32 o_vid = 3;                     /**< Outer vid. */
+    uint32 o_pbits = 4;                    /**< Outer pbits. */
+    uint32 o_tpid = 5;                    /**< Outer tpid. */
+    uint32 i_vid = 6;                     /**< Inner vid. */
+    uint32 i_pbits = 7;                    /**< Inner pbits. */
+    uint32 i_tpid = 8;                    /**< Inner tpid. */
+}
+
+/** Variable-length list of aggregationPortId.
+ */
+message BalAggregationPortIdList
+{
+    uint32 len = 1;                        /**< List length in uint8 (bytes). */
+    repeated uint32 val = 2;    /**< List contents. */
+}
+
+/** classifier.
+ */
+message BalClassifier
+{
+    BalClassifierId presence_mask = 1; /**< Presence Mask. */
+    uint32 o_tpid = 2;                    /**< Outer TPID of the packet to be classified */
+    uint32 o_vid = 3;                     /**< Outer VID of the packet to be classified */
+    uint32 i_tpid = 4;                    /**< Inner TPID of the packet to be classified */
+    uint32 i_vid = 5;                     /**< Inner VID of the packet to be classified */
+    uint32 o_pbits = 6;                    /**< Outer PBITS of the packet to be classified */
+    uint32 i_pbits = 7;                    /**< Inner PBITS of the packet to be classified */
+    uint32 ether_type = 8;                /**< Ethertype of the packet to be classified */
+    bytes dst_mac = 9;          /**< Destination MAC address of the packet to be classified */
+    bytes src_mac = 10;          /**< Source MAC address of the packet to be classified */
+    uint32 ip_proto = 11;                   /**< IP protocol of the packet to be classified */
+    uint32 dst_ip = 12;          /**< Destination IP address of the packet to be classified */
+    uint32 src_ip = 13;          /**< Source IP address of the packet to be classified */
+    uint32 src_port = 14;                  /**< Source port of the packet to be classified */
+    uint32 dst_port = 15;                  /**< Destination port of the packet to be classified */
+    BalPktTagType pkt_tag_type = 16;   /**< The tag type of the ingress packets */
+}
+
+/** Packet destination.
+ */
+message BalDestNni {
+    uint32 int_id = 1;      /**< Interface ID. */
+}
+
+message BalDestSubTerm {
+    uint32 sub_term_id = 1;  /**< Subscriber terminal ID. */
+    uint32 sub_term_uni = 2;      /**< Subscriber terminal UNI. */
+    uint32 int_id = 3;            /**< Interface ID. */
+}
+
+message BalDest
+{
+    BalDestType type = 1;              /**< packet destination type. */
+    oneof u {
+        BalDestNni nni = 2;
+        BalDestSubTerm sub_term = 3;
+    }
+}
+
+/** Variable-length list of flowId.
+ */
+message BalFlowIdList
+{
+    uint32 len = 1;           /**< List length. */
+    repeated uint32 val = 2;    /**< List contents. */
+}
+
+/** Queue Reference
+ */
+message BalTmQueue_ref
+{
+    uint32 sched_id = 1;    /**< Scheduler (Tmsched) ID */
+    uint32 queue_id = 2;    /**< Queue ID */
+}
+
+/** Group Member Info.
+ */
+message BalGroupMemberInfo
+{
+    uint32 intf_id = 1;             /**< Access interface id for this member */
+    uint32 svc_port_id = 2; /**< The multicast "GEM" for this member */
+    BalAction action = 3;               /**< VLAN actions */
+    BalTmQueue_ref queue = 4;          /**< Egress queue */
+}
+
+/** Variable-length list of groupMemberInfo.
+ */
+message BalGroupMemberInfoList_u16
+{
+    uint32 len = 1;                   /**< List length. */
+    repeated BalGroupMemberInfo val = 2;  /**< List contents. */
+}
+
+/** Serial number.
+ */
+message BalSerialNumber
+{
+    string vendor_id = 1;       /**< vendor id. */
+    string vendor_specific = 2; /**< vendor specific. */
+}
+
+/** Variable-length list of servicePortId.
+ */
+message uint32List_u8
+{
+    uint32 len = 1;                    /**< List length. */
+    repeated uint32 val = 2;    /**< List contents. */
+}
+
+/** SLA.
+ */
+message BalSla
+{
+    BalSlaId presence_mask = 1;    /**< Presence Mask. */
+    uint32 min_rate = 2;              /**< The minimal rate for this flow, in kilobits per second (optional) */
+    uint32 max_rate = 3;              /**< The maximum rate for this flow, in kilobits per second (optional) */
+}
+
+/** Variable-length list of subId.
+ */
+message uint32List_u16
+{
+    uint32 len = 1;       /**< List length. */
+    repeated uint32 val = 2; /**< List contents. */
+}
+
+/** Random Early Discard Configuration
+ */
+message BalTmred
+{
+    uint32 min_threshold = 1;   /**< Min threshold in percent of max queue size */
+    uint32 max_threshold = 2;   /**< Max threshold in percent of max queue size */
+    uint32 max_probability = 3; /**< Discard probability for occupancy between min_threshold and max_threshold */
+}
+
+/** Queue Buffer Admission Control
+ */
+message BalTMBacTaildrop
+{
+    uint32 max_size = 1;      /**< max number of packets in the queue */
+}
+
+message BalTMBacRed
+{
+    BalTmred red = 1;      /**< Random Early Discard configuration */
+}
+message BalTMBacWred {
+    BalTmred green = 1;    /**< Green Random Early Discard Configuration */
+    BalTmred yellow = 2;   /**< Yellow Random Early Discard Configuration */
+    BalTmred red = 3;      /**< Red Random Early Discard Configuration */
+}
+
+message BalTmBac
+{
+    BalTmBacType type = 1;        /**< Buffer Admission Control Type */
+    oneof u {
+        BalTMBacTaildrop taildrop = 2;
+        BalTMBacRed red = 3;
+        BalTMBacWred wred = 4;
+    }
+}
+
+/** Variable-length list of TmQueueId.
+ */
+message BalTmQueueIdList
+{
+    uint32 len = 1;                /**< List length. */
+    repeated uint32 val = 2;    /**< List contents. */
+}
+
+/** Variable-length list of TmSchedId.
+ */
+message BalTmSchedIdList
+{
+    uint32 len = 1;                /**< List length. */
+    repeated uint32 val = 2;    /**< List contents. */
+}
+
+/** TM Scheduler Owner
+ */
+message BalTmSchedOwnerInterface
+{
+    BalIntfType intf_type = 1; /**< Interface Type */
+    uint32 intf_id = 2;     /**< Interface ID */
+}
+
+message BalTmSchedOwnerSubTerm
+{
+    uint32 intf_id = 1;     /**< PON interface id */
+    uint32 sub_term_id = 2;  /**< Subscriber terminal ID */
+}
+
+message BalTmSchedOwnerAggPort
+{
+    BalTmSchedOwnerAggPortId presence_mask = 1;    /**< Presence Mask. */
+    uint32 intf_id = 2;                        /**< PON interface id */
+    uint32 sub_term_id = 3;              /**< Subscriber terminal id */
+    uint32 agg_port_id = 4; /**< Aggregation port id */
+}
+
+message BalTmSchedOwnerUni
+{
+    uint32 intf_id = 1;                        /**< PON interface id */
+    uint32 sub_term_id = 2;              /**< Subscriber terminal id */
+    uint32 idx = 3;    /**< Index at subscriber terminal */
+}
+
+message BalTmSchedOwnerVirtual
+{
+    uint32 idx = 1;   /**< Owner index */
+}
+
+message BalTmSchedOwner
+{
+    BalTmSchedOwnerType type = 1;    /**< Owner type */
+    oneof u {
+        BalTmSchedOwnerInterface interface = 2;
+        BalTmSchedOwnerSubTerm sub_term = 3;
+        BalTmSchedOwnerAggPort agg_port = 4;
+        BalTmSchedOwnerUni uni = 5;
+        BalTmSchedOwnerVirtual virtual = 6;
+    }
+}
+
+/** Scheduling Parent Connect Point
+ */
+message BalTmSchedParent
+{
+    BalTmSchedParentId presence_mask = 1;    /**< Presence Mask. */
+    uint32 sched_id = 2;                /**< Parent scheduler id */
+    uint32 priority = 3;                /**< Priority */
+    uint32 weight = 4;                    /**< Weight */
+}
+
+/** Shaping Parameters
+ */
+message BalTmShaping
+{
+    BalTmShapingId presence_mask = 1; /**< Presence Mask. */
+    uint32 sbr = 2;                       /**< Sustained Bit Rate (kbps) */
+    uint32 pbr = 3;                       /**< Peak Bit Rate (kbps) */
+    uint32 burst = 4;                     /**< Max Burst Bytes at Peak Bit Rate */
+}
+
+/** ITU-PON Extended SLA Parameters
+ */
+message BalTmTcontSla
+{
+    BalTmTcontSlaId presence_mask = 1;           /**< Presence Mask. */
+    BalExtraBwEligibilityType extra_bw_elig = 2; /**< Extra BW eligibility type */
+    uint32 nrt_cbr = 3;        /**< NRT CBR */
+    uint32 rt_cbr = 4;         /**< RT_CBR */
+    uint32 rt_profile = 5;     /**< RT Profile */
+    uint32 nrt_profile = 6;    /**< NRT Profile */
+}
+
+/** Variable-length list of U8.
+ */
+message BalU8List
+{
+    uint32 len = 1;   /**< List length. */
+    repeated uint32 val = 2;   /**< List contents. */
+}
+
+/** Structure definition for the "key" group of the "access_terminal" object.
+ */
+message BalAccessTerminalKey
+{
+    uint32 access_term_id = 1;    /**< Reserved (set to 0) */
+}
+
+/** Structure definition for the "cfg" group of the "access_terminal" object.
+ */
+message BalAccessTerminalCfgData
+{
+    BalState admin_state = 1;   /**< Administrative state */
+    BalStatus oper_status = 2;  /**< Operational status */
+    BalIwfMode iwf_mode = 3;   /**< The interworking mode */
+}
+
+/** Transport message definition for "cfg" group of "access_terminal" object.
+ */
+message BalAccessTerminalCfg
+{
+    BalAccessTerminalKey key = 1; /**< Object key. */
+    BalAccessTerminalCfgData data = 2;   /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ind" group of the "access_terminal" object.
+ */
+message BalAccessTerminalIndData
+{
+    BalState admin_state = 1;   /**< Current administrative state */
+    BalStatus oper_status = 2;  /**< Current operational status */
+    BalIwfMode iwf_mode = 3;   /**< The interworking mode */
+}
+
+/** Transport message definition for "ind" group of "access_terminal" object.
+ */
+message BalAccessTerminalInd
+{
+    BalObj hdr = 1;                        /**< Transport header. */
+    BalAccessTerminalKey key = 2;         /**< Object key. */
+    BalAccessTerminalIndData data = 3;   /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "key" group of the "flow" object.
+ */
+message BalFlowKey
+{
+    uint32 flow_id = 1;     /**< The ID of the flow object instance being referenced */
+    BalFlowType flow_type = 2; /**< The type of the flow, Upstream, Downstream, Broadcast or Multicast */
+}
+
+/** Structure definition for the "cfg" group of the "flow" object.
+ */
+message BalFlowCfgData
+{
+    BalState admin_state = 1;               /**< Administrative state */
+    BalStatus oper_status = 2;              /**< Operational status */
+    uint32 access_int_id = 3;           /**< The ID of the subscriber side interface; i.e. PON */
+    uint32 network_int_id = 4;          /**< The ID of the network side interface; i.e. NNI */
+    uint32 sub_term_id = 5;              /**< The ID of the subsccriber terminal device */
+    uint32 sub_term_uni_idx = 6;               /**< The index of the subsccriber terminal uni port the flow is related to */
+    uint32 svc_port_id = 7;     /**< The ID of the service port (for GPON/XGPON - GEM ID) */
+    uint32 agg_port_id = 8; /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
+    bool resolve_mac = 9;                 /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
+    BalClassifier classifier = 10;           /**< The classifier for this flow */
+    BalAction action = 11;                   /**< The action associated with the flow */
+    BalSla sla = 12;             /**< SLA parameters for this flow */
+    uint64 cookie = 13;       /**< Application cookie */
+    uint32 priority = 14;          /**< Priority for this flow in case of multiple match. */
+    uint32 group_id = 15;   /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
+    BalTmQueue_ref queue = 16;  /**< Egress queue */
+}
+
+/** Transport message definition for "cfg" group of "flow" object.
+ */
+message BalFlowCfg
+{
+    BalFlowKey key = 1;        /**< Object key. */
+    BalFlowCfgData data = 2;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "stat" group of the "flow" object.
+ */
+message BalFlowStatData
+{
+    uint64 rx_packets = 1;    /**< Received packets. */
+    uint64 rx_bytes = 2;      /**< Received bytes. */
+    uint64 tx_packets = 3;    /**< Transmitted packets. */
+    uint64 tx_bytes = 4;      /**< Transmitted bytes. */
+}
+
+/** Transport message definition for "stat" group of "flow" object.
+ */
+message BalFlowStat
+{
+    BalObj hdr = 1;            /**< Transport header. */
+    BalFlowKey key = 2;        /**< Object key. */
+    BalFlowStatData data = 3; /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ind" group of the "flow" object.
+ */
+message BalFlowIndData
+{
+    BalState admin_state = 1;       /**< Administrative state */
+    BalStatus oper_status = 2;      /**< Operational Status */
+    uint32 access_int_id = 3;         /**< The ID of the subscriber side interface; i.e. PON */
+    uint32 network_int_id = 4;        /**< The ID of the network side interface; i.e. NNI */
+    uint32 sub_term_id = 5;           /**< The ID of the subsccriber terminal device */
+    uint32 svc_port_id = 6;           /**< The ID of the service port (for GPON/XGPON - GEM ID) */
+    uint32 agg_port_id = 7;           /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
+    bool resolve_mac = 8;         /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
+    uint32 base_tc_id = 9;            /**< The base index of the TC object(s) to be used for this flow */
+    BalClassifier classifier = 10;   /**< The classifier for this flow */
+    BalAction action = 11;           /**< The action associated with the flow */
+    BalSla sla = 12;                 /**< SLA parameters for this flow */
+    uint32 cookie = 13;                /**< Application cookie */
+    uint32 priority = 14;              /**< Priority for this flow in case of multiple match. */
+}
+
+/** Transport message definition for "ind" group of "flow" object.
+ */
+message BalFlowInd
+{
+    BalObj hdr = 1;            /**< Transport header. */
+    BalFlowKey key = 2;        /**< Object key. */
+    BalFlowIndData data = 3;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "key" group of the "group" object.
+ */
+message BalGroupKey
+{
+    uint32 group_id = 1;   /**< The ID of the group object instance being referenced */
+}
+
+/** Structure definition for the "cfg" group of the "group" object.
+ */
+message BalGroupCfgData
+{
+    BalGroupMemberCmd members_cmd = 1;        /**< Membership operation commands. */
+    BalGroupMemberInfoList_u16 members = 2;  /**< The list of members associated with this group */
+    uint64 cookie = 3;                       /**< Application cookie */
+    BalFlowIdList flows = 4;              /**< List of flows associated with this group */
+    BalGroupOwner owner = 5;                   /**< Owner of the group. */
+}
+
+/** Transport message definition for "cfg" group of "group" object.
+ */
+message BalGroupCfg
+{
+    BalGroupKey key = 1;       /**< Object key. */
+    BalGroupCfgData data = 2; /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "key" group of the "interface" object.
+ */
+message BalInterfaceKey
+{
+    uint32 intf_id = 1;           /**< intf_id. */
+    BalIntfType intf_type = 2; /**< intfType. */
+}
+
+/** Structure definition for the "cfg" group of the "interface" object.
+ */
+message BalInterfaceCfgData
+{
+    BalState admin_state = 1;   /**< Administrative state */
+    BalStatus oper_status = 2;  /**< Operational status */
+    uint32 min_data_agg_port_id = 3;    /**< The minimum agg_portId that is allowed in the system */
+    uint32 min_data_svc_port_id = 4;        /**< The minimum svc_portId that is allowed in the system */
+    BalTrxType transceiver_type = 5;                   /**< The transceiver type used on an interface */
+    BalDsMissMode ds_miss_mode = 6;                   /**< Defines the action to take for unknown downstream packets */
+    uint32 mtu = 7;                   /**< The MTU for an interface */
+    BalControl flow_control = 8;    /**< Flow control enable or disable */
+    uint32 ds_tm = 9;       /**< Downstream scheduler and shaper */
+    uint32 us_tm = 10;       /**< Upstream scheduler and shaper */
+    uint32List_u16 sub_term_id_list = 11;    /**< A list of subscriber terminal ids configured on this interface */
+}
+
+/** Transport message definition for "cfg" group of "interface" object.
+ */
+message BalInterfaceCfg
+{
+    BalInterfaceKey key = 1;       /**< Object key. */
+    BalInterfaceCfgData data = 2; /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "stat" group of the "interface" object.
+ */
+message BalInterfaceStatData
+{
+    uint64 rx_packets = 1;    /**< Recieved packets. */
+    uint64 rx_bytes = 2;      /**< Received bytes. */
+    uint64 tx_packets = 3;    /**< Transmitted packets. */
+    uint64 tx_bytes = 4;      /**< Transmitted bytes. */
+}
+
+/** Transport message definition for "stat" group of "interface" object.
+ */
+message BalInterfaceStat
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalInterfaceKey key = 2;           /**< Object key. */
+    BalInterfaceStatData data = 3;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ind" group of the "interface" object.
+ */
+message BalInterfaceIndData
+{
+    BalState admin_state = 1;           /**< Current administrative state */
+    BalStatus oper_status = 2;          /**< Current operational state */
+    uint32 min_data_agg_port_id = 3;      /**< The minimum agg_port_id that is allowed in the system */
+    uint32 min_data_svc_port_id = 4;      /**< The minimum svc_port_id that is allowed in the system */
+    BalTrxType transceiver_type = 5;   /**< The transceiver type used on an interface */
+    BalDsMissMode ds_miss_mode = 6;   /**< Defines the action to take for DS unknown packets */
+    uint32 mtu = 7;                       /**< The MTU for an interface */
+    BalControl flow_control = 8;        /**< Flow control enable or disable */
+    uint32 ds_tm = 9;           /**< Downstream scheduler and shaper */
+    uint32 us_tm = 10;           /**< Upstream scheduler and shaper */
+}
+
+/** Transport message definition for "ind" group of "interface" object.
+ */
+message BalInterfaceInd
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalInterfaceKey key = 2;       /**< Object key. */
+    BalInterfaceIndData data = 3; /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "key" group of the "packet" object.
+ */
+message BalPacketKey
+{
+    uint32 reserved = 1;              /**< Reserved key field. */
+    BalDest packet_send_dest = 2;   /**< Packet destination. */
+}
+
+/** Structure definition for the "cfg" group of the "packet" object.
+ */
+message BalPacketCfgData
+{
+    uint32 flow_id = 1;             /**< N/A for sending a packet */
+    BalFlowType flow_type = 2;         /**< Flow Type. */
+    uint32 intf_id = 3;             /**< Interface ID. */
+    BalIntfType intf_type = 4;         /**< Interface Type. */
+    uint32 svc_port = 5;    /**< N/A for sending a packet */
+    uint64 flow_cookie = 6;          /**< N/A for sending a packet */
+    BalU8List pkt = 7;             /**< Packet Data. */
+}
+
+/** Transport message definition for "cfg" group of "packet" object.
+ */
+message BalPacketCfg
+{
+    BalPacketKey key = 1;          /**< Object key. */
+    BalPacketCfgData data = 2;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ind" group of the "packet" object.
+ */
+message BalPacketIndData
+{
+    uint32 flow_id = 1;             /**< N/A for sending a packet */
+    BalFlowType flow_type = 2;         /**< Flow Type. */
+    uint32 intf_id = 3;             /**< Interface ID. */
+    BalIntfType intf_type = 4;         /**< Interface Type. */
+    uint32 svc_port = 5;    /**< N/A for sending a packet */
+    uint64 flow_cookie = 6;          /**< N/A for sending a packet */
+    BalU8List pkt = 7;             /**< Packet Data. */
+}
+
+/** Transport message definition for "ind" group of "packet" object.
+ */
+message BalPacketInd
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalPacketKey key = 2;          /**< Object key. */
+    BalPacketIndData data = 3;    /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "key" group of the "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalKey
+{
+    uint32 sub_term_id = 1;  /**< sub_termId. */
+    uint32 intf_id = 2;     /**< intf_id. */
+}
+
+/** Structure definition for the "cfg" group of the "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalCfgData
+{
+    BalState admin_state = 1;           /**< Administrative state */
+    BalStatus oper_status = 2;          /**< Operational status */
+    BalSerialNumber serial_number = 3; /**< The serial number of an  ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+    string password = 4;           /**< The password of a GPON subscriber terminal */
+    string registration_id = 5;                 /**< ONU registration ID of an  ITU PON (XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+    uint32 svc_port_id = 6;                     /**< The management service port ID (for PON, the ONU ID) */
+    bytes mac_address = 7;                          /**< The Ethernet MAC address of an EPON subscriber terminal */
+    uint32 ds_tm = 8;                               /**< Downstream scheduler and shaper */
+    uint32 us_tm = 9;                               /**< Upstream scheduler and shaper */
+    uint32List_u8 svc_port_id_list = 10;        /**< A list of bearer traffic svc_port_ids associated with this subscriber terminal */
+    BalAggregationPortIdList agg_port_id_list = 11;    /**< A list of aggrPort_ids associated with this subscriber terminal */
+}
+
+/** Transport message definition for "cfg" group of "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalCfg
+{
+    BalSubscriberTerminalKey key = 1; /**< Object key. */
+    BalSubscriberTerminalCfgData data = 2;   /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "stat" group of the "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalStatData
+{
+    uint64 rx_packets = 1;    /**< Received packets on specified object */
+    uint64 rx_bytes = 2;      /**< Received bytes on specified object */
+    uint64 tx_packets = 3;    /**< Transmitted packets on specified object */
+    uint64 tx_bytes = 4;      /**< Transmittted bytes on specified object */
+}
+
+/** Transport message definition for "stat" group of "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalStat
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalStatData data = 3;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ind" group of the "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalIndData
+{
+    BalState admin_state = 1;               /**< Current administrative state */
+    BalStatus oper_status = 2;              /**< Current operational status */
+    BalSerialNumber serial_number = 3;     /**< The serial number of an  ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+    string password = 4;               /**< The password of a GPON subscriber terminal */
+    string registration_id = 5; /**< ONU registration ID of an  ITU PON (XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
+    uint32 svc_port_id = 6;                   /**< The service port ID (for PON, the ONU ID) */
+    bytes mac_address = 7;          /**< The Ethernet MAC address of an epon subscriber terminal */
+    uint32 ds_tm = 8;               /**< Downstream scheduler and shaper */
+    uint32 us_tm = 9;               /**< Upstream scheduler and shaper */
+}
+
+/** Transport message definition for "ind" group of "subscriber_terminal"
+ * object.
+ */
+message BalSubscriberTerminalInd
+{
+    BalObj hdr = 1;                    /**< Transport header. */
+    BalSubscriberTerminalKey key = 2; /**< Object key. */
+    BalSubscriberTerminalIndData data = 3;   /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "key" group of the "TmQueue" object.
+ */
+message BalTmQueueKey
+{
+    uint32 sched_id = 1;    /**< Scheduler that owns the queue */
+    BalTmSchedDir sched_dir = 2;  /**< sched dir. */
+    uint32 id = 3;          /**< Queue id */
+}
+
+/** Structure definition for the "cfg" group of the "TmQueue" object.
+ */
+message BalTmQueueCfgData
+{
+    uint32 priority = 1;            /**< Scheduling priority */
+    uint32 weight = 2;                /**< Scheduling weight */
+    BalTmShaping rate = 3;                 /**< Rate shaping parameters */
+    BalTmBac bac = 4;                      /**< Buffer admission control */
+    BalTmCreationMode creation_mode = 5;  /**< Creation mode */
+    uint32 ref_count = 6;                      /**< reference count (flows) */
+}
+
+/** Transport message definition for "cfg" group of "TmQueue" object.
+ */
+message BalTmQueueCfg
+{
+    BalTmQueueKey key = 1;        /**< Object key. */
+    BalTmQueueCfgData data = 2;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "stat" group of the "TmQueue" object.
+ */
+message BalTmQueueStatData
+{
+    uint64 packets_ok = 1;        /**< Packets transmitted succewssfully */
+    uint64 bytes_ok = 2;          /**< Bytes transmitted successfully */
+    uint64 packets_discarded = 3; /**< Packets discarded */
+    uint64 bytes_discarded = 4;   /**< Bytes discarded */
+}
+
+/** Transport message definition for "stat" group of "TmQueue" object.
+ */
+message BalTmQueueStat
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalTmQueueKey key = 2;        /**< Object key. */
+    BalTmQueueStatData data = 3; /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ind" group of the "TmQueue" object.
+ *
+ * Tm Queue Indication
+ */
+message BalTmQueueIndData
+{
+    uint32 ret = 1;   /**< ret */
+}
+
+/** Transport message definition for "ind" group of "TmQueue" object.
+ */
+message BalTmQueueInd
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalTmQueueKey key = 2;        /**< Object key. */
+    BalTmQueueIndData data = 3;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "key" group of the "TmSched" object.
+ */
+message BalTmSchedKey
+{
+    BalTmSchedDir dir = 1;    /**< Traffic direction */
+    uint32 id = 2;      /**< ID */
+}
+
+/** Structure definition for the "cfg" group of the "TmSched" object.
+ */
+message BalTmSchedCfgData
+{
+    BalTmSchedOwner owner = 1;        /**< owner. */
+    BalTmSchedType sched_type = 2;    /**< Scheduler type */
+    BalTmSchedParent sched_parent = 3;            /**< Scheduling parameters for parent scheduler */
+    BalTmSchedChildType sched_child_type = 4;    /**< Scheduling level for children tm  */
+    BalTmShaping rate = 5;                 /**< Rate shaping parameters */
+    BalTmTcontSla tcont_sla = 6;          /**< Additional SLA parameters for aggPort owner */
+    BalTmCreationMode creation_mode = 7;  /**< Creation mode */
+    BalTmQueueIdList queues = 8;      /**< Subsidiary queues */
+    BalTmSchedIdList sub_scheds = 9;  /**< Subsidiary schedulers */
+    uint32 num_priorities = 10;                 /**< Max number of strict priority scheduling elements */
+}
+
+/** Transport message definition for "cfg" group of "Tmsched" object.
+ */
+message BalTmSchedCfg
+{
+    BalTmSchedKey key = 1;        /**< Object key. */
+    BalTmSchedCfgData data = 2;  /**< All properties that must be set by the user. */
+}
+
+/** Structure definition for the "ind" group of the "TmSched" object.
+ *
+ * Tm Sched Indication
+ */
+message BalTmSchedIndData
+{
+    uint32 ret = 1;   /**< ret */
+}
+
+/** Transport message definition for "ind" group of "TmSched" object.
+ */
+message BalTmSchedInd
+{
+    BalObj hdr = 1;                /**< Transport header. */
+    BalTmSchedKey key = 2;        /**< Object key. */
+    BalTmSchedIndData data = 3;  /**< All properties that must be set by the user. */
+}
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_msg_type.proto b/voltha/adapters/asfvolt16_olt/protos/bal_msg_type.proto
new file mode 100644
index 0000000..e39275a
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_msg_type.proto
@@ -0,0 +1,28 @@
+//
+// Copyright 2017 the original author or authors.
+//
+// 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.
+//
+
+syntax = "proto3";
+
+/** The BAL message subtype
+ */
+enum BalMsgType
+{
+    BAL_MSG_TYPE_REQ = 0;
+    BAL_MSG_TYPE_RSP = 1;
+    BAL_MSG_TYPE_ACK = 2;
+    BAL_MSG_TYPE_IND = 3;      /**< An INDication message generated as a part of a protocol exchange  */
+    BAL_MSG_TYPE_AUTO_IND = 4; /**< An asynchronous autonomous INDication message  */
+}
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto b/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
new file mode 100644
index 0000000..ac2d16f
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_obj.proto
@@ -0,0 +1,79 @@
+//
+// Copyright 2017 the original author or authors.
+//
+// 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.
+//
+
+syntax = "proto3";
+
+import "bal_msg_type.proto";
+import "bal_osmsg.proto";
+import "bal_model_ids.proto";
+import "bal_errno.proto";
+
+/*
+ * The BAL common message header
+ */
+message bal_comm_msg_hdr
+{
+    uint32         version_major = 2;   /**< Header Major version number */
+    uint32         version_minor = 3;   /**< Header Minor version number */
+    BalMsgType  msg_type = 4;        /**< Request / Response / Ack / Indication */
+    uint32         msg_id = 5;          /**< Message ID – the ID of the message (subID under the message type) */
+    uint32         ex_id = 6;           /**< Exchange ID for message tracking between endpoints */
+    BalSubsystem    sender = 7;          /**< Sender subsystem - used for additional validation */
+    uint32         timestamp = 8;       /**< Timestamp when the message was sent */
+    uint64            scratchpad = 10;      /**< Scratchpad used for inter-thread communication */
+    bytes          payload = 11;       /**< Payload follows the header */
+}
+
+/** Helper type to determine what the data format of a message should look like */
+enum Bal_mgt_group
+{
+    BCMBAL_MGT_GROUP_KEY = 0;               /**< Key that uniquely identifies object instance */
+    BCMBAL_MGT_GROUP_CFG = 1;               /**< Configuration (get/set/clear) */
+    BCMBAL_MGT_GROUP_STAT = 2;              /**< Statistics */
+    BCMBAL_MGT_GROUP_AUTO = 3;              /**< Autonomous indications */
+    BCMBAL_MGT_GROUP_AUTO_CFG = 4;          /**< Autonomous indication configuration */
+    BCMBAL_MGT_GROUP__NUM_OF = 5;
+}
+
+/** Object message type. Can be a combination of flags. */
+enum BalObj_msg_type
+{
+    BCMBAL_OBJ_MSG_TYPE_INVALID  = 0;
+    BCMBAL_OBJ_MSG_TYPE_GET   = 0x01;   /**< Get configuration parameters */
+    BCMBAL_OBJ_MSG_TYPE_SET   = 0x02;   /**< Set configuration parameters */
+    BCMBAL_OBJ_MSG_TYPE_CLEAR = 0x04;   /**< Clear configuration parameters */
+}
+
+/** Object message direction - request or response. */
+enum BalObj_msg_dir
+{
+    BCMBAL_OBJ_MSG_DIR_REQUEST = 0;
+    BCMBAL_OBJ_MSG_DIR_RESPONS = 1;
+}
+
+/** Information common to all BAL objects */
+message BalObj
+{
+    bal_comm_msg_hdr     comm_hdr = 1;      /**< Communication header */
+    uint32    version = 2;       /**< Version of the Object definition/messageure */
+    BalObjId        obj_type = 3;      /**< An enumerated ID associated with the object being specified */
+    Bal_mgt_group     group = 4;         /**< Management group */
+    uint32             subgroup = 5;      /**< Subgroup for indications */
+    BalObj_msg_type  type = 6;          /**< Type (e.g. get / set / clear)  */
+    BalObj_msg_dir   dir = 7;           /**< Direction - request / response */
+    BalErrno		     status = 8;        /**< BAL status code (BCM_ERR_OK–success, error code otherwise) */
+    uint64 presence_mask = 9; /**< Indicates which attribute parameters are present */
+}
diff --git a/voltha/adapters/asfvolt16_olt/protos/bal_osmsg.proto b/voltha/adapters/asfvolt16_olt/protos/bal_osmsg.proto
new file mode 100644
index 0000000..dd246ec
--- /dev/null
+++ b/voltha/adapters/asfvolt16_olt/protos/bal_osmsg.proto
@@ -0,0 +1,66 @@
+//
+// Copyright 2017 the original author or authors.
+//
+// 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.
+//
+
+syntax = "proto3";
+
+/* BAL subsystem */
+enum BalSubsystem
+{
+    BAL_SUBSYSTEM_CORE = 0;
+    BAL_SUBSYSTEM_MAC_UTIL = 1;
+    BAL_SUBSYSTEM_SWITCH_UTIL = 2;
+    BAL_SUBSYSTEM_PUBLIC_API = 3;
+    BAL_SUBSYSTEM__NUM_OF = 4;
+}
+
+/** BAL OS message
+ * \ingroup system_msg
+ */
+enum BcmosMsgId
+{
+    BCMOS_MSG_ID__BEGIN = 0;
+
+    /* Messages used internally by OS abstraction. Do not touch */
+    BCMOS_MSG_ID_INTERNAL_TIMER = 1;            /**< Internal "timer message" type */
+    BCMOS_MSG_ID_INTERNAL_EVENT = 2;            /**< Internal "event message" type */
+    BCMOS_MSG_ID_INTERNAL_IPC = 3;
+
+    /* Application messages */
+    BCMOS_MSG_ID_IPC_PING = 4;                  /*** Inter-process communication ping */
+
+    /* Core/Switch util messages */
+    BCMBAL_SWITCH_UTIL_MSG = 5;
+
+    /* Core/Mac util messages */
+    BCMBAL_MAC_UTIL_MSG = 6;
+
+    /* Core<->Public API messages */
+    BCMBAL_MGMT_MSG = 7;
+
+    /* Core->Public API indication messages (both auto and "normal") */
+    BCMBAL_MGMT_API_IND_MSG = 8;
+
+    BCMOS_MSG_ID_EON_PROXY_RX = 9;
+    BCMOS_MSG_ID_EON_DESTROY_STATE = 10;
+
+    BCMOS_MSG_ID_EPON_OAM_PROXY_RX = 11;
+    BCMOS_MSG_ID_EPON_OAM_TIMEOUT = 12;
+
+	BCMOS_MSG_ID_OMCI_TRANSPORT_SEND = 13;
+
+    BCMOS_MSG_ID__END = 14;
+    BCMOS_MSG_ID__FORCE16 = 0x7fff;
+}
