diff --git a/apps/yms/gui/BUCK b/apps/yang-gui/BUCK
similarity index 82%
rename from apps/yms/gui/BUCK
rename to apps/yang-gui/BUCK
index 3d9073e..a3470f8 100644
--- a/apps/yms/gui/BUCK
+++ b/apps/yang-gui/BUCK
@@ -1,5 +1,6 @@
 COMPILE_DEPS = [
     '//lib:CORE_DEPS',
+    '//lib:onos-yang-runtime',
 ]
 
 osgi_jar_with_tests (
@@ -13,4 +14,5 @@
     category = 'Utility',
     url = 'http://onosproject.org',
     description = 'YANG Runtime GUI application for visualization of registered YANG models.',
+    required_apps = [ 'org.onosproject.yang' ],
 )
diff --git a/apps/yms/gui/src/main/java/org/onosproject/yms/gui/YangModelMessageHandler.java b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelMessageHandler.java
similarity index 88%
rename from apps/yms/gui/src/main/java/org/onosproject/yms/gui/YangModelMessageHandler.java
rename to apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelMessageHandler.java
index 1dca6f4..475b105 100644
--- a/apps/yms/gui/src/main/java/org/onosproject/yms/gui/YangModelMessageHandler.java
+++ b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelMessageHandler.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.yms.gui;
+package org.onosproject.yang.gui;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableSet;
@@ -24,13 +24,15 @@
 import org.onosproject.ui.UiMessageHandler;
 import org.onosproject.ui.table.TableModel;
 import org.onosproject.ui.table.TableRequestHandler;
+import org.onosproject.yang.model.YangModel;
+import org.onosproject.yang.runtime.YangModelRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Collection;
 
 /**
- * ONOS UI Yang Models message handler.
+ * ONOS UI YANG Models message handler.
  */
 public class YangModelMessageHandler extends UiMessageHandler {
 
@@ -53,7 +55,7 @@
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-//    private YmsService ymsService;
+    private YangModelRegistry modelRegistry;
     // TODO: fill out other fields as necessary
 
 
@@ -62,7 +64,7 @@
     @Override
     public void init(UiConnection connection, ServiceDirectory directory) {
         super.init(connection, directory);
-//        ymsService = directory.get(YmsService.class);
+        modelRegistry = directory.get(YangModelRegistry.class);
         // TODO: addListeners(); ???
     }
 
@@ -102,17 +104,15 @@
 
         @Override
         protected void populateTable(TableModel tm, ObjectNode payload) {
-            // TODO: use ymsService(?) to iterate over list of models...
-            for (int k = 0; k < 5; k++) {
-                populateRow(tm.addRow(), k);
+            for (YangModel model : modelRegistry.getModels()) {
+                populateRow(tm.addRow(), model.getYangModulesId().toString());
             }
         }
 
         // TODO: obviously, this should be adapted to arrange YANG model data
         //       into the appropriate table columns
-        private void populateRow(TableModel.Row row, int k) {
-            row.cell(ID, k)
-                    .cell(TYPE, "ymtype-" + k);
+        private void populateRow(TableModel.Row row, String k) {
+            row.cell(ID, k).cell(TYPE, k);
         }
     }
 
diff --git a/apps/yms/gui/src/main/java/org/onosproject/yms/gui/YangModelUiComponent.java b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelUiComponent.java
similarity index 98%
rename from apps/yms/gui/src/main/java/org/onosproject/yms/gui/YangModelUiComponent.java
rename to apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelUiComponent.java
index c3f883e..b4d9697 100644
--- a/apps/yms/gui/src/main/java/org/onosproject/yms/gui/YangModelUiComponent.java
+++ b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelUiComponent.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.yms.gui;
+package org.onosproject.yang.gui;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.felix.scr.annotations.Activate;
diff --git a/apps/yms/gui/src/main/java/org/onosproject/yms/gui/package-info.java b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/package-info.java
similarity index 95%
rename from apps/yms/gui/src/main/java/org/onosproject/yms/gui/package-info.java
rename to apps/yang-gui/src/main/java/org/onosproject/yang/gui/package-info.java
index 5ec2d11..e7f96ab 100644
--- a/apps/yms/gui/src/main/java/org/onosproject/yms/gui/package-info.java
+++ b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/package-info.java
@@ -17,4 +17,4 @@
 /**
  * GUI elements for YANG Runtime &amp; Live YANG Compiler subsystem.
  */
-package org.onosproject.yms.gui;
\ No newline at end of file
+package org.onosproject.yang.gui;
\ No newline at end of file
diff --git a/apps/yms/gui/src/main/resources/app/view/yangModel/yangModel-theme.css b/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel-theme.css
similarity index 100%
rename from apps/yms/gui/src/main/resources/app/view/yangModel/yangModel-theme.css
rename to apps/yang-gui/src/main/resources/app/view/yangModel/yangModel-theme.css
diff --git a/apps/yms/gui/src/main/resources/app/view/yangModel/yangModel.css b/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.css
similarity index 100%
rename from apps/yms/gui/src/main/resources/app/view/yangModel/yangModel.css
rename to apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.css
diff --git a/apps/yms/gui/src/main/resources/app/view/yangModel/yangModel.html b/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.html
similarity index 100%
rename from apps/yms/gui/src/main/resources/app/view/yangModel/yangModel.html
rename to apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.html
diff --git a/apps/yms/gui/src/main/resources/app/view/yangModel/yangModel.js b/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.js
similarity index 100%
rename from apps/yms/gui/src/main/resources/app/view/yangModel/yangModel.js
rename to apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.js
diff --git a/apps/yms/gui/src/main/resources/yangModel/css.html b/apps/yang-gui/src/main/resources/yangModel/css.html
similarity index 100%
rename from apps/yms/gui/src/main/resources/yangModel/css.html
rename to apps/yang-gui/src/main/resources/yangModel/css.html
diff --git a/apps/yms/gui/src/main/resources/yangModel/js.html b/apps/yang-gui/src/main/resources/yangModel/js.html
similarity index 100%
rename from apps/yms/gui/src/main/resources/yangModel/js.html
rename to apps/yang-gui/src/main/resources/yangModel/js.html
diff --git a/apps/yang/BUCK b/apps/yang/BUCK
index 41fa681..7af28b0 100644
--- a/apps/yang/BUCK
+++ b/apps/yang/BUCK
@@ -17,7 +17,7 @@
 )
 
 onos_app (
-    title = 'ONOS YANG Extension',
+    title = 'YANG Compiler and Runtime',
     category = 'Utility',
     url = 'http://onosproject.org',
     description = 'Base application to bring in the YANG libraries and assemble them for other apps to use.',
diff --git a/modules.defs b/modules.defs
index b983af1..f4d7ad1 100644
--- a/modules.defs
+++ b/modules.defs
@@ -177,7 +177,6 @@
     '//apps/scalablegateway:onos-apps-scalablegateway-oar',
     '//apps/castor:onos-apps-castor-oar',
     '//apps/yms:onos-apps-yms-oar',
-    '//apps/yms/gui:onos-apps-yms-gui-oar',
     '//apps/ofagent:onos-apps-ofagent-oar',
     '//apps/mappingmanagement:onos-apps-mappingmanagement-oar',
     '//apps/config:onos-apps-config-oar',
@@ -189,7 +188,8 @@
     '//protocols/restconf/server:onos-protocols-restconf-server-oar',
     '//apps/restconf:onos-apps-restconf-oar',
     '//apps/flowspec-api:onos-apps-flowspec-api-oar',
-    '//apps/yang:onos-apps-yang-oar'
+    '//apps/yang:onos-apps-yang-oar',
+    '//apps/yang-gui:onos-apps-yang-gui-oar',
 ]
 
 APP_JARS = [
