diff --git a/apps/config/pom.xml b/apps/config/pom.xml
index 1b8e334..dcb6b7a 100755
--- a/apps/config/pom.xml
+++ b/apps/config/pom.xml
@@ -37,7 +37,7 @@
         <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-yang-model</artifactId>
-            <version>1.12-b3</version>
+            <version>1.12.0-b5</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/apps/netconf/client/BUCK b/apps/netconf/client/BUCK
index 9db9512..b31c727 100644
--- a/apps/netconf/client/BUCK
+++ b/apps/netconf/client/BUCK
@@ -1,6 +1,6 @@
 COMPILE_DEPS = [
   '//lib:CORE_DEPS',
-  '//lib:onos-yang-runtime-api',
+  '//lib:onos-yang-runtime',
   '//protocols/netconf/api:onos-protocols-netconf-api'
 ]
 
diff --git a/apps/netconf/client/src/main/java/org/onosproject/netconf/client/api/NetconfTranslator.java b/apps/netconf/client/src/main/java/org/onosproject/netconf/client/api/NetconfTranslator.java
index 7706896..973cdb9 100644
--- a/apps/netconf/client/src/main/java/org/onosproject/netconf/client/api/NetconfTranslator.java
+++ b/apps/netconf/client/src/main/java/org/onosproject/netconf/client/api/NetconfTranslator.java
@@ -17,8 +17,8 @@
 package org.onosproject.netconf.client.api;
 
 import org.onosproject.net.DeviceId;
-import org.onosproject.yang.runtime.api.CompositeData;
 import com.google.common.annotations.Beta;
+import org.onosproject.yang.runtime.CompositeData;
 
 import java.io.IOException;
 
diff --git a/apps/yang/src/main/java/org/onosproject/yang/YangManager.java b/apps/yang/src/main/java/org/onosproject/yang/YangManager.java
deleted file mode 100644
index c41e950..0000000
--- a/apps/yang/src/main/java/org/onosproject/yang/YangManager.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * 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.
- */
-package org.onosproject.yang;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.slf4j.Logger;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Base application to bring in the YANG libraries and assemble them for other apps to use.
- *
- */
-@Component(immediate = true)
-public class YangManager {
-    private final Logger log = getLogger(getClass());
-    @Activate
-    public void activate() {
-        //log.info("Onos Yang Extension Activated!!");
-    }
-
-    @Deactivate
-    public void deactivate() {
-        //log.info("Onos Yang Extension Deactivated!!");
-    }
-}
\ No newline at end of file
diff --git a/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java b/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
index 9522b67..1df5f13 100644
--- a/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
+++ b/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
@@ -24,7 +24,6 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
 import org.onosproject.core.CoreService;
-import org.onosproject.yang.model.SchemaContext;
 import org.onosproject.yang.model.YangModel;
 import org.onosproject.yang.runtime.CompositeData;
 import org.onosproject.yang.runtime.CompositeStream;
@@ -57,20 +56,22 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected CoreService coreService;
 
-    private YangModelRegistry modelRegistry;
-    private YangSerializerRegistry serializerRegistry;
+    private DefaultYangModelRegistry modelRegistry;
+    private DefaultYangSerializerRegistry serializerRegistry;
+    private DefaultYangRuntimeHandler runtimeService;
 
     @Activate
     public void activate() {
         coreService.registerApplication(APP_ID);
         serializerRegistry = new DefaultYangSerializerRegistry();
         modelRegistry = new DefaultYangModelRegistry();
-        log.info("YANG runtime manager started");
+        runtimeService = new DefaultYangRuntimeHandler(serializerRegistry, modelRegistry);
+        log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
-        log.info("YANG runtime manager stopped");
+        log.info("Stopped");
     }
 
 
@@ -106,15 +107,11 @@
 
     @Override
     public CompositeData decode(CompositeStream cs, RuntimeContext rc) {
-        YangRuntimeService service = new DefaultYangRuntimeHandler(
-                serializerRegistry, (SchemaContext) modelRegistry);
-        return service.decode(cs, rc);
+        return runtimeService.decode(cs, rc);
     }
 
     @Override
     public CompositeStream encode(CompositeData cd, RuntimeContext rc) {
-        YangRuntimeService service = new DefaultYangRuntimeHandler(
-                serializerRegistry, (SchemaContext) modelRegistry);
-        return service.encode(cd, rc);
+        return runtimeService.encode(cd, rc);
     }
 }
diff --git a/lib/BUCK b/lib/BUCK
index 590e92b..704648a 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -1,4 +1,4 @@
-# ***** This file was auto-generated at Mon, 6 Mar 2017 22:12:12 GMT. Do not edit this file manually. *****
+# ***** This file was auto-generated at Tue, 7 Mar 2017 20:50:07 GMT. Do not edit this file manually. *****
 # ***** Use onos-lib-gen *****
 
 pass_thru_pom(
@@ -46,8 +46,8 @@
     ':onos-yang-utils-generator',
     ':onos-yang-model',
     ':onos-yang-compiler-api',
-    ':org.apache.servicemix.bundles.dom4j',
     ':onos-yang-maven-plugin',
+    ':org.apache.servicemix.bundles.dom4j',
   ],
 )
 
@@ -1097,15 +1097,6 @@
 )
 
 remote_jar (
-  name = 'onos-yang-runtime-api',
-  out = 'onos-yang-runtime-api-1.12-b2.jar',
-  url = 'mvn:org.onosproject:onos-yang-runtime-api:jar:1.12-b2',
-  sha1 = 'e3c540648727b13962a67e4ef09252b1b78511ae',
-  maven_coords = 'org.onosproject:onos-yang-runtime-api:jar:NON-OSGI:1.12-b2',
-  visibility = [ 'PUBLIC' ],
-)
-
-remote_jar (
   name = 'snmp-core',
   out = 'snmp-core-1.3-20161021.1.jar',
   url = 'mvn:org.onosproject:snmp-core:jar:1.3-20161021.1',
diff --git a/lib/deps.json b/lib/deps.json
index 99df312..7a146b0 100644
--- a/lib/deps.json
+++ b/lib/deps.json
@@ -35,8 +35,8 @@
       "onos-yang-utils-generator",
       "onos-yang-model",
       "onos-yang-compiler-api",
-      "org.apache.servicemix.bundles.dom4j",
-      "onos-yang-maven-plugin"
+      "onos-yang-maven-plugin",
+      "org.apache.servicemix.bundles.dom4j"
     ],
     "CORE_DEPS": [
       ":COMPILE",
@@ -199,7 +199,6 @@
       "uri": "mvn:org.onosproject:org.apache.felix.scr.bnd:1.4.1-SNAPSHOT",
       "repo": "https://oss.sonatype.org/content/repositories/snapshots"
     },
-    "onos-yang-runtime-api": "mvn:org.onosproject:onos-yang-runtime-api:1.12-b2",
     "snmp-core": "mvn:org.onosproject:snmp-core:1.3-20161021.1",
     "bti7000": "mvn:org.onosproject:mibbler-mibs-bti7000:1.0-20151221.1",
     "mibs-net-snmp": "mvn:org.onosproject:mibbler-mibs-net-snmp:1.0-20151221.1",
