diff --git a/agent/test/Makefile b/agent/test/Makefile
index 24a4382..26e984a 100644
--- a/agent/test/Makefile
+++ b/agent/test/Makefile
@@ -19,9 +19,9 @@
 ##
 ##
 TOP_DIR=`pwd`
-OPENOLTDEVICE ?= asfvolt16
+OPENOLTDEVICE ?= sim
 
-OPENOLT_PROTO_VER ?= v4.2.0
+OPENOLT_PROTO_VER ?= v5.1.0
 
 ########################################################################
 ##
@@ -41,8 +41,14 @@
 
 export CXX CXXFLAGS OPENOLT_PROTO_VER
 
-BAL_API_VER ?= bal-api-3.4.9.9
-BAL_API_DIR=$(BAL_API_VER)
+BAL_MAJOR_VER = 3
+BAL_MINOR_VER = 10
+BAL_REV_HOST_VER = 2
+BAL_REV_EMBEDDED_VER = 2
+BAL_API_SO_VER = $(BAL_MAJOR_VER).$(BAL_MINOR_VER).$(BAL_REV_HOST_VER)
+BAL_API_VER = $(BAL_API_SO_VER).$(BAL_REV_EMBEDDED_VER)
+
+BAL_API_DIR=bal-oss-api-$(BAL_API_VER)
 BALLIBNAME=bcm_host_api_stubs
 BALLIBDIR=$(BAL_API_DIR)/stubs
 BAL_INC = -I$(BAL_API_DIR)/include \
@@ -93,10 +99,17 @@
 	if [ -d $(BAL_API_DIR) ]; then \
 		echo "$(BAL_API_DIR) exists"; \
 	else \
-		git clone https://github.com/balapi/$(BAL_API_VER).git ;\
-		sed -i "\$$i #include \"$(OPENOLT_ROOT_DIR)/agent/test/inc/bcmos_system_test.h\"" ./$(BAL_API_DIR)/include/bcmos_system.h; \
-		sed -i "\$$i #include \"$(OPENOLT_ROOT_DIR)/agent/test/inc/bcmos_common_test.h\"" ./$(BAL_API_DIR)/include/bcmos_common.h; \
-		sed -i "\$$i #include \"$(OPENOLT_ROOT_DIR)/agent/test/inc/bcmolt_api_model_api_structs_test.h\"" ./$(BAL_API_DIR)/include/object_model/bcmolt_api_model_api_structs.h; \
+		mkdir -p $(BAL_API_DIR); \
+		mkdir -p lib; \
+		cd $(BAL_API_DIR); \
+		git clone https://github.com/balapi/bal-sdk.git -b $(BAL_API_VER); \
+		mv bal-sdk bal-sdk-$(BAL_API_VER); \
+		cd bal-sdk-$(BAL_API_VER); \
+		make BOARD=$(OPENOLTDEVICE); \
+		cp build/fs/libbal_host_api-oss.$(BAL_API_SO_VER).so ../../lib/libbal_host_api-oss.so; \
+		cd .. && ln -s bal-sdk-$(BAL_API_VER)/build/fs/include include; \
+		sed -i 's/BUG_ON_PRINT((condition),/printf(/g' include/bcmos_system.h; \
+		cd ..;\
 	fi
 
 # openoltapi
diff --git a/agent/test/inc/bcmcli_session.h b/agent/test/inc/bcmcli_session.h
index c9de0c3..42f1e83 100644
--- a/agent/test/inc/bcmcli_session.h
+++ b/agent/test/inc/bcmcli_session.h
@@ -20,17 +20,25 @@
 typedef int bcmcli_session;
 typedef char bcmcli_entry[50];
 typedef char bcmcli_cmd_parm;
-struct bcmos_task {
-    char task_name[50];
-};
 
 typedef struct bcmcli_session_parm {
     void *get_prompt;
     int access_right;
 } bcmcli_session_parm;
 
+typedef struct bcmcli_cmd_cb {
+    int dummy;
+} bcmcli_cmd_cb;
+
+typedef struct bcmcli_access_right {
+    int dummy;
+} bcmcli_access_right;
+
+typedef struct bcmcli_cmd_extra_parm {
+    int dummy;
+} bcmcli_cmd_extra_parm;
+
 #define BCMCLI_ACCESS_ADMIN 0xff
-#define BUG_ON //
 #define BCMCLI_MAKE_CMD_NOPARM(ptr, command1, command2, command3)
 #define BAL_API_VERSION 3
 
diff --git a/agent/test/inc/bcmolt_conn_mgr.h b/agent/test/inc/bcmolt_conn_mgr.h
index 9b94fab..9fdfcb7 100644
--- a/agent/test/inc/bcmolt_conn_mgr.h
+++ b/agent/test/inc/bcmolt_conn_mgr.h
@@ -22,9 +22,5 @@
 
 typedef int bcmolt_goid;
 
-typedef struct bcmos_fastlock {
-    pthread_mutex_t lock;
-} bcmos_fastlock;
-
 }
 #endif
diff --git a/agent/test/inc/test_stub.h b/agent/test/inc/test_stub.h
index 9dc5814..5ad0df3 100644
--- a/agent/test/inc/test_stub.h
+++ b/agent/test/inc/test_stub.h
@@ -31,10 +31,6 @@
 
 
 void bcmos_usleep(uint32_t us);
-void* bcmos_calloc(uint32_t size);
-void bcmos_fastlock_init(bcmos_fastlock *lock, uint32_t flags);
-long bcmos_fastlock_lock(bcmos_fastlock *lock);
-void bcmos_fastlock_unlock(bcmos_fastlock *lock, long flags);
 
 #endif //__TEST_STUB_H__
 
diff --git a/agent/test/src/bal_stub.cc b/agent/test/src/bal_stub.cc
index 62eb931..73e9c5c 100644
--- a/agent/test/src/bal_stub.cc
+++ b/agent/test/src/bal_stub.cc
@@ -36,32 +36,12 @@
     usleep (10000);
 }
 
-void* bcmos_calloc(uint32_t size) {
-    void *ptr = malloc(size);
-    if (ptr) {
-       memset(ptr, 0, size);
-    }
-    return ptr;
-}
-
 void bcmos_free(void *ptr) {
     if (ptr) {
        free(ptr);
     }
 }
 
-void bcmos_fastlock_init(bcmos_fastlock *lock, uint32_t flags)  {
-    pthread_mutex_init(&(lock->lock), NULL);
-}
-
-long bcmos_fastlock_lock(bcmos_fastlock *lock) {
-    pthread_mutex_lock(&(lock->lock));
-}
-
-void bcmos_fastlock_unlock(bcmos_fastlock *lock, long flags) {
-    pthread_mutex_unlock(&(lock->lock));
-}
-
 /* Initialize API layer */
 bcmos_errno bcmolt_api_init(void)
 {
@@ -323,4 +303,45 @@
     printf ("-- stub bcmolt_api_conn_mgr_is_connected called --\n");
     return true;
 }
+
+bcmos_errno bcmos_mutex_create(bcmos_mutex *mutex, uint32_t flags, const char *name)
+{
+    pthread_mutexattr_t attr;
+    if (pthread_mutexattr_init(&attr) != 0) {
+      printf("pthread_mutex_attr_init() error");
+      exit(1);
+    }
+    pthread_mutex_init(&mutex->m, &attr);
+    return BCM_ERR_OK;
+}
+
+/* Destroy mutex */
+void bcmos_mutex_destroy(bcmos_mutex *mutex)
+{
+    pthread_mutex_destroy(&mutex->m);
+}
+
+/* Lock mutex */
+void bcmos_mutex_lock(bcmos_mutex *mutex)
+{
+    pthread_mutex_lock(&mutex->m);
+}
+
+/* Release mutex */
+void bcmos_mutex_unlock(bcmos_mutex *mutex)
+{
+    pthread_mutex_unlock(&mutex->m);
+}
+
+void *bcmos_alloc(uint32_t size)
+{
+    return malloc(size);
+}
+
+bcmos_errno bcmcli_cmd_add(bcmcli_entry *dir, const char *name, bcmcli_cmd_cb cmd_cb,
+                  const char *help, bcmcli_access_right access_right,
+                  const bcmcli_cmd_extra_parm *extras, bcmcli_cmd_parm parms[]) {
+    return BCM_ERR_OK;
+}
+
 }
