diff --git a/models/openconfig/src/main/java/org/onosproject/models/openconfig/OpenConfigModelRegistrator.java b/models/openconfig/src/main/java/org/onosproject/models/openconfig/OpenConfigModelRegistrator.java
index b899cfb..92fe966 100644
--- a/models/openconfig/src/main/java/org/onosproject/models/openconfig/OpenConfigModelRegistrator.java
+++ b/models/openconfig/src/main/java/org/onosproject/models/openconfig/OpenConfigModelRegistrator.java
@@ -21,16 +21,96 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.yang.AbstractYangModelRegistrator;
 import org.onosproject.yang.gen.v1.ianaiftype.rev20170330.IanaIfType;
+import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.IetfInetTypes;
+import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.IetfInterfaces;
 import org.onosproject.yang.gen.v1.ietfyangtypes.rev20130715.IetfYangTypes;
+import org.onosproject.yang.gen.v1.openconfigaaa.rev20170706.OpenconfigAaa;
+import org.onosproject.yang.gen.v1.openconfigaaa.rev20170706.OpenconfigAaaRadius;
+import org.onosproject.yang.gen.v1.openconfigaaa.rev20170706.OpenconfigAaaTacacs;
+import org.onosproject.yang.gen.v1.openconfigaaatypes.rev20170706.OpenconfigAaaTypes;
+import org.onosproject.yang.gen.v1.openconfigacl.rev20170526.OpenconfigAcl;
+import org.onosproject.yang.gen.v1.openconfigaft.rev20170510.*;
+import org.onosproject.yang.gen.v1.openconfigaftnetworkinstance.rev20170113.OpenconfigAftNetworkInstance;
+import org.onosproject.yang.gen.v1.openconfigafttypes.rev20170510.OpenconfigAftTypes;
+import org.onosproject.yang.gen.v1.openconfigbgp.rev20170730.*;
+import org.onosproject.yang.gen.v1.openconfigbgppolicy.rev20170730.OpenconfigBgpPolicy;
+import org.onosproject.yang.gen.v1.openconfigbgptypes.rev20170730.OpenconfigBgpErrors;
+import org.onosproject.yang.gen.v1.openconfigbgptypes.rev20170730.OpenconfigBgpTypes;
+import org.onosproject.yang.gen.v1.openconfigcatalogtypes.rev20170501.OpenconfigCatalogTypes;
+import org.onosproject.yang.gen.v1.openconfigchannelmonitor.rev20170708.OpenconfigChannelMonitor;
+import org.onosproject.yang.gen.v1.openconfigifaggregate.rev20170714.OpenconfigIfAggregate;
+import org.onosproject.yang.gen.v1.openconfigifethernet.rev20170714.OpenconfigIfEthernet;
+import org.onosproject.yang.gen.v1.openconfigifip.rev20170714.OpenconfigIfIp;
+import org.onosproject.yang.gen.v1.openconfigifipext.rev20170714.OpenconfigIfIpExt;
+import org.onosproject.yang.gen.v1.openconfigiftypes.rev20161114.OpenconfigIfTypes;
+import org.onosproject.yang.gen.v1.openconfiginettypes.rev20170706.OpenconfigInetTypes;
 import org.onosproject.yang.gen.v1.openconfiginterfaces.rev20170714.OpenconfigInterfaces;
+import org.onosproject.yang.gen.v1.openconfigisis.rev20170726.OpenconfigIsis;
+import org.onosproject.yang.gen.v1.openconfigisis.rev20170726.OpenconfigIsisLsp;
+import org.onosproject.yang.gen.v1.openconfigisis.rev20170726.OpenconfigIsisRouting;
+import org.onosproject.yang.gen.v1.openconfigisislsdbtypes.rev20170726.OpenconfigIsisLsdbTypes;
+import org.onosproject.yang.gen.v1.openconfigisispolicy.rev20170726.OpenconfigIsisPolicy;
+import org.onosproject.yang.gen.v1.openconfigisistypes.rev20170726.OpenconfigIsisTypes;
+import org.onosproject.yang.gen.v1.openconfiglacp.rev20170505.OpenconfigLacp;
+import org.onosproject.yang.gen.v1.openconfiglldp.rev20160516.OpenconfigLldp;
+import org.onosproject.yang.gen.v1.openconfiglldptypes.rev20160516.OpenconfigLldpTypes;
+import org.onosproject.yang.gen.v1.openconfiglocalrouting.rev20170515.OpenconfigLocalRouting;
+import org.onosproject.yang.gen.v1.openconfigmodulecatalog.rev20170501.OpenconfigModuleCatalog;
+import org.onosproject.yang.gen.v1.openconfigmpls.rev20170621.OpenconfigMpls;
+import org.onosproject.yang.gen.v1.openconfigmpls.rev20170621.OpenconfigMplsIgp;
+import org.onosproject.yang.gen.v1.openconfigmpls.rev20170621.OpenconfigMplsStatic;
+import org.onosproject.yang.gen.v1.openconfigmpls.rev20170621.OpenconfigMplsTe;
+import org.onosproject.yang.gen.v1.openconfigmplsldp.rev20170621.OpenconfigMplsLdp;
+import org.onosproject.yang.gen.v1.openconfigmplsrsvp.rev20170621.OpenconfigMplsRsvp;
+import org.onosproject.yang.gen.v1.openconfigmplssr.rev20170621.OpenconfigMplsSr;
+import org.onosproject.yang.gen.v1.openconfigmplstypes.rev20170621.OpenconfigMplsTypes;
+import org.onosproject.yang.gen.v1.openconfignetworkinstance.rev20170228.OpenconfigNetworkInstance;
+import org.onosproject.yang.gen.v1.openconfignetworkinstance.rev20170228.OpenconfigNetworkInstanceL2;
+import org.onosproject.yang.gen.v1.openconfignetworkinstancel3.rev20170228.OpenconfigNetworkInstanceL3;
+import org.onosproject.yang.gen.v1.openconfignetworkinstancepolicy.rev20170215.OpenconfigNetworkInstancePolicy;
+import org.onosproject.yang.gen.v1.openconfignetworkinstancetypes.rev20170228.OpenconfigNetworkInstanceTypes;
+import org.onosproject.yang.gen.v1.openconfigopenflow.rev20170601.OpenconfigOpenflow;
+import org.onosproject.yang.gen.v1.openconfigopenflowtypes.rev20170601.OpenconfigOpenflowTypes;
+import org.onosproject.yang.gen.v1.openconfigopticalamplifier.rev20170708.OpenconfigOpticalAmplifier;
+import org.onosproject.yang.gen.v1.openconfigospfpolicy.rev20160822.OpenconfigOspfPolicy;
+import org.onosproject.yang.gen.v1.openconfigospftypes.rev20170228.OpenconfigOspfTypes;
+import org.onosproject.yang.gen.v1.openconfigospfv2.rev20170228.*;
+import org.onosproject.yang.gen.v1.openconfigpacketmatch.rev20170526.OpenconfigPacketMatch;
+import org.onosproject.yang.gen.v1.openconfigpacketmatchtypes.rev20170526.OpenconfigPacketMatchTypes;
 import org.onosproject.yang.gen.v1.openconfigplatform.rev20161222.OpenconfigPlatform;
 import org.onosproject.yang.gen.v1.openconfigplatformlinecard.rev20170803.OpenconfigPlatformLinecard;
 import org.onosproject.yang.gen.v1.openconfigplatformport.rev20161024.OpenconfigPlatformPort;
 import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20170708.OpenconfigPlatformTransceiver;
+import org.onosproject.yang.gen.v1.openconfigplatformtypes.rev20170816.OpenconfigPlatformTypes;
+import org.onosproject.yang.gen.v1.openconfigpolicyforwarding.rev20170621.OpenconfigPfForwardingPolicies;
+import org.onosproject.yang.gen.v1.openconfigpolicyforwarding.rev20170621.OpenconfigPfInterfaces;
+import org.onosproject.yang.gen.v1.openconfigpolicyforwarding.rev20170621.OpenconfigPfPathGroups;
+import org.onosproject.yang.gen.v1.openconfigpolicyforwarding.rev20170621.OpenconfigPolicyForwarding;
+import org.onosproject.yang.gen.v1.openconfigpolicytypes.rev20170714.OpenconfigPolicyTypes;
+import org.onosproject.yang.gen.v1.openconfigprocmon.rev20170706.OpenconfigProcmon;
+import org.onosproject.yang.gen.v1.openconfigrelayagent.rev20160516.OpenconfigRelayAgent;
+import org.onosproject.yang.gen.v1.openconfigribbgp.rev20161017.*;
+import org.onosproject.yang.gen.v1.openconfigribbgpext.rev20161017.OpenconfigRibBgpExt;
+import org.onosproject.yang.gen.v1.openconfigribbgptypes.rev20161017.OpenconfigRibBgpTypes;
+import org.onosproject.yang.gen.v1.openconfigroutingpolicy.rev20170714.OpenconfigRoutingPolicy;
+import org.onosproject.yang.gen.v1.openconfigrsvpsrext.rev20170306.OpenconfigRsvpSrExt;
+import org.onosproject.yang.gen.v1.openconfigsegmentrouting.rev20170112.OpenconfigSegmentRouting;
+import org.onosproject.yang.gen.v1.openconfigspanningtree.rev20170714.OpenconfigSpanningTree;
+import org.onosproject.yang.gen.v1.openconfigspanningtreetypes.rev20170714.OpenconfigSpanningTreeTypes;
+import org.onosproject.yang.gen.v1.openconfigsystem.rev20170706.OpenconfigSystem;
+import org.onosproject.yang.gen.v1.openconfigsystemlogging.rev20170706.OpenconfigSystemLogging;
+import org.onosproject.yang.gen.v1.openconfigsystemterminal.rev20170706.OpenconfigSystemTerminal;
+import org.onosproject.yang.gen.v1.openconfigtelemetry.rev20170220.OpenconfigTelemetry;
+import org.onosproject.yang.gen.v1.openconfigtelemetrytypes.rev20170220.OpenconfigTelemetryTypes;
 import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.OpenconfigTerminalDevice;
 import org.onosproject.yang.gen.v1.openconfigtransportlinecommon.rev20170708.OpenconfigTransportLineCommon;
+import org.onosproject.yang.gen.v1.openconfigtransportlineprotection.rev20170708.OpenconfigTransportLineProtection;
 import org.onosproject.yang.gen.v1.openconfigtransporttypes.rev20170816.OpenconfigTransportTypes;
 import org.onosproject.yang.gen.v1.openconfigtypes.rev20170816.OpenconfigTypes;
+import org.onosproject.yang.gen.v1.openconfigvlan.rev20170714.OpenconfigVlan;
+import org.onosproject.yang.gen.v1.openconfigvlantypes.rev20170714.OpenconfigVlanTypes;
+import org.onosproject.yang.gen.v1.openconfigwavelengthrouter.rev20170708.OpenconfigWavelengthRouter;
+import org.onosproject.yang.gen.v1.openconfigyangtypes.rev20170730.OpenconfigYangTypes;
 import org.onosproject.yang.model.DefaultYangModuleId;
 import org.onosproject.yang.model.YangModuleId;
 import org.onosproject.yang.runtime.AppModuleInfo;
@@ -53,36 +133,233 @@
 
         return ImmutableMap.<YangModuleId, AppModuleInfo>builder()
                 .put(new DefaultYangModuleId("iana-if-type", "2017-03-30"),
-                     new DefaultAppModuleInfo(IanaIfType.class, null))
-
-                // FIXME requires entry for each .yangs not covered yet
-
+                        new DefaultAppModuleInfo(IanaIfType.class, null))
+                .put(new DefaultYangModuleId("ietf-inet-types", "2013-07-15"),
+                        new DefaultAppModuleInfo(IetfInetTypes.class, null))
+                .put(new DefaultYangModuleId("ietf-interfaces", "2014-05-08"),
+                        new DefaultAppModuleInfo(IetfInterfaces.class, null))
+                .put(new DefaultYangModuleId("openconfig-aaa-radius", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigAaaRadius.class, null))
+                .put(new DefaultYangModuleId("openconfig-aaa-tacacs", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigAaaTacacs.class, null))
+                .put(new DefaultYangModuleId("openconfig-aaa-types", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigAaaTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-aaa", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigAaa.class, null))
+                .put(new DefaultYangModuleId("openconfig-acl", "2017-05-26"),
+                        new DefaultAppModuleInfo(OpenconfigAcl.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-common", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAftCommon.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-ethernet", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAftEthernet.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-ipv4", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAftIpv4.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-ipv6", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAftIpv6.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-mpls", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAftMpls.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-network-instance", "2017-01-13"),
+                        new DefaultAppModuleInfo(OpenconfigAftNetworkInstance.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-pf", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAftPf.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft-types", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAftTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-aft", "2017-05-10"),
+                        new DefaultAppModuleInfo(OpenconfigAft.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-common-multiprotocol", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpCommonMultiprotocol.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-common-structure", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpCommonStructure.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-common", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpCommon.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-errors", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpErrors.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-global", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpGlobal.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-neighbor", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpNeighbor.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-peer-group", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpPeerGroup.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-policy", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpPolicy.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp-types", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgpTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-bgp", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigBgp.class, null))
+                .put(new DefaultYangModuleId("openconfig-catalog-types", "2017-05-01"),
+                        new DefaultAppModuleInfo(OpenconfigCatalogTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-channel-monitor", "2017-07-08"),
+                        new DefaultAppModuleInfo(OpenconfigChannelMonitor.class, null))
+                .put(new DefaultYangModuleId("openconfig-if-aggregate", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigIfAggregate.class, null))
+                .put(new DefaultYangModuleId("openconfig-if-ethernet", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigIfEthernet.class, null))
+                .put(new DefaultYangModuleId("openconfig-if-ip-ext", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigIfIpExt.class, null))
+                .put(new DefaultYangModuleId("openconfig-if-ip", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigIfIp.class, null))
+                .put(new DefaultYangModuleId("openconfig-if-types", "2016-11-14"),
+                        new DefaultAppModuleInfo(OpenconfigIfTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-inet-types", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigInetTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-isis-lsdb-types", "2017-07-26"),
+                        new DefaultAppModuleInfo(OpenconfigIsisLsdbTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-isis-lsp", "2017-07-26"),
+                        new DefaultAppModuleInfo(OpenconfigIsisLsp.class, null))
+                .put(new DefaultYangModuleId("openconfig-isis-policy", "2017-07-26"),
+                        new DefaultAppModuleInfo(OpenconfigIsisPolicy.class, null))
+                .put(new DefaultYangModuleId("openconfig-isis-routing", "2017-07-26"),
+                        new DefaultAppModuleInfo(OpenconfigIsisRouting.class, null))
+                .put(new DefaultYangModuleId("openconfig-isis-types", "2017-07-26"),
+                        new DefaultAppModuleInfo(OpenconfigIsisTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-isis", "2017-07-26"),
+                        new DefaultAppModuleInfo(OpenconfigIsis.class, null))
+                .put(new DefaultYangModuleId("openconfig-lacp", "2017-05-05"),
+                        new DefaultAppModuleInfo(OpenconfigLacp.class, null))
+                .put(new DefaultYangModuleId("openconfig-lldp-types", "2016-05-16"),
+                        new DefaultAppModuleInfo(OpenconfigLldpTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-lldp", "2016-05-16"),
+                        new DefaultAppModuleInfo(OpenconfigLldp.class, null))
+                .put(new DefaultYangModuleId("openconfig-local-routing", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigLocalRouting.class, null))
+                .put(new DefaultYangModuleId("openconfig-module-catalog", "2017-05-01"),
+                        new DefaultAppModuleInfo(OpenconfigModuleCatalog.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls-igp", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMplsIgp.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls-ldp", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMplsLdp.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls-rsvp", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMplsRsvp.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls-sr", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMplsSr.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls-static", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMplsStatic.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls-te", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMplsTe.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls-types", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMplsTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-mpls", "2017-05-15"),
+                        new DefaultAppModuleInfo(OpenconfigMpls.class, null))
+                .put(new DefaultYangModuleId("openconfig-network-instance-l2", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigNetworkInstanceL2.class, null))
+                .put(new DefaultYangModuleId("openconfig-network-instance-l3", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigNetworkInstanceL3.class, null))
+                .put(new DefaultYangModuleId("openconfig-network-instance-policy", "2017-02-15"),
+                        new DefaultAppModuleInfo(OpenconfigNetworkInstancePolicy.class, null))
+                .put(new DefaultYangModuleId("openconfig-network-instance-types", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigNetworkInstanceTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-network-instance", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigNetworkInstance.class, null))
+                .put(new DefaultYangModuleId("openconfig-openflow-types", "2017-06-01"),
+                        new DefaultAppModuleInfo(OpenconfigOpenflowTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-openflow", "2017-06-01"),
+                        new DefaultAppModuleInfo(OpenconfigOpenflow.class, null))
+                .put(new DefaultYangModuleId("openconfig-optical-amplifier", "2017-07-08"),
+                        new DefaultAppModuleInfo(OpenconfigOpticalAmplifier.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospf-policy", "2016-08-22"),
+                        new DefaultAppModuleInfo(OpenconfigOspfPolicy.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospf-types", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigOspfTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospfv2-area-interface", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigOspfv2AreaInterface.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospfv2-area", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigOspfv2Area.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospfv2-common", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigOspfv2Common.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospfv2-global", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigOspfv2Global.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospfv2-lsdb", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigOspfv2Lsdb.class, null))
+                .put(new DefaultYangModuleId("openconfig-ospfv2", "2017-02-28"),
+                        new DefaultAppModuleInfo(OpenconfigOspfv2.class, null))
+                .put(new DefaultYangModuleId("openconfig-packet-match-types", "2017-05-26"),
+                        new DefaultAppModuleInfo(OpenconfigPacketMatchTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-packet-match", "2017-05-26"),
+                        new DefaultAppModuleInfo(OpenconfigPacketMatch.class, null))
+                .put(new DefaultYangModuleId("openconfig-pf-forwarding-policies", "2017-06-21"),
+                        new DefaultAppModuleInfo(OpenconfigPfForwardingPolicies.class, null))
+                .put(new DefaultYangModuleId("openconfig-pf-interfaces", "2017-06-21"),
+                        new DefaultAppModuleInfo(OpenconfigPfInterfaces.class, null))
+                .put(new DefaultYangModuleId("openconfig-pf-path-groups", "2017-06-21"),
+                        new DefaultAppModuleInfo(OpenconfigPfPathGroups.class, null))
+                .put(new DefaultYangModuleId("openconfig-platform-types", "2017-08-16"),
+                        new DefaultAppModuleInfo(OpenconfigPlatformTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-policy-forwarding", "2017-06-21"),
+                        new DefaultAppModuleInfo(OpenconfigPolicyForwarding.class, null))
+                .put(new DefaultYangModuleId("openconfig-policy-types", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigPolicyTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-procmon", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigProcmon.class, null))
+                .put(new DefaultYangModuleId("openconfig-relay-agent", "2016-05-16"),
+                        new DefaultAppModuleInfo(OpenconfigRelayAgent.class, null))
+                .put(new DefaultYangModuleId("openconfig-rib-bgp-attributes", "2016-10-17"),
+                        new DefaultAppModuleInfo(OpenconfigRibBgpAttributes.class, null))
+                .put(new DefaultYangModuleId("openconfig-rib-bgp-ext", "2016-10-17"),
+                        new DefaultAppModuleInfo(OpenconfigRibBgpExt.class, null))
+                .put(new DefaultYangModuleId("openconfig-rib-bgp-shared-attributes", "2016-10-17"),
+                        new DefaultAppModuleInfo(OpenconfigRibBgpSharedAttributes.class, null))
+                .put(new DefaultYangModuleId("openconfig-rib-bgp-table-attributes", "2016-10-17"),
+                        new DefaultAppModuleInfo(OpenconfigRibBgpTableAttributes.class, null))
+                .put(new DefaultYangModuleId("openconfig-rib-bgp-tables", "2016-10-17"),
+                        new DefaultAppModuleInfo(OpenconfigRibBgpTables.class, null))
+                .put(new DefaultYangModuleId("openconfig-rib-bgp-types", "2016-10-17"),
+                        new DefaultAppModuleInfo(OpenconfigRibBgpTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-rib-bgp", "2016-10-17"),
+                        new DefaultAppModuleInfo(OpenconfigRibBgp.class, null))
+                .put(new DefaultYangModuleId("openconfig-routing-policy", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigRoutingPolicy.class, null))
+                .put(new DefaultYangModuleId("openconfig-rsvp-sr-ext", "2017-03-06"),
+                        new DefaultAppModuleInfo(OpenconfigRsvpSrExt.class, null))
+                .put(new DefaultYangModuleId("openconfig-segment-routing", "2017-01-12"),
+                        new DefaultAppModuleInfo(OpenconfigSegmentRouting.class, null))
+                .put(new DefaultYangModuleId("openconfig-spanning-tree-types", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigSpanningTreeTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-spanning-tree", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigSpanningTree.class, null))
+                .put(new DefaultYangModuleId("openconfig-system-logging", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigSystemLogging.class, null))
+                .put(new DefaultYangModuleId("openconfig-system-terminal", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigSystemTerminal.class, null))
+                .put(new DefaultYangModuleId("openconfig-system", "2017-07-06"),
+                        new DefaultAppModuleInfo(OpenconfigSystem.class, null))
+                .put(new DefaultYangModuleId("openconfig-telemetry-types", "2017-02-20"),
+                        new DefaultAppModuleInfo(OpenconfigTelemetryTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-telemetry", "2017-02-20"),
+                        new DefaultAppModuleInfo(OpenconfigTelemetry.class, null))
+                .put(new DefaultYangModuleId("openconfig-transport-line-protection", "2017-07-08"),
+                        new DefaultAppModuleInfo(OpenconfigTransportLineProtection.class, null))
+                .put(new DefaultYangModuleId("openconfig-vlan-types", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigVlanTypes.class, null))
+                .put(new DefaultYangModuleId("openconfig-vlan", "2017-07-14"),
+                        new DefaultAppModuleInfo(OpenconfigVlan.class, null))
+                .put(new DefaultYangModuleId("openconfig-wavelength-router", "2017-07-08"),
+                        new DefaultAppModuleInfo(OpenconfigWavelengthRouter.class, null))
+                .put(new DefaultYangModuleId("openconfig-yang-types", "2017-07-30"),
+                        new DefaultAppModuleInfo(OpenconfigYangTypes.class, null))
                 .put(new DefaultYangModuleId("openconfig-platform", "2016-12-22"),
-                     new DefaultAppModuleInfo(OpenconfigPlatform.class, null))
+                        new DefaultAppModuleInfo(OpenconfigPlatform.class, null))
                 .put(new DefaultYangModuleId("openconfig-interfaces", "2017-07-14"),
-                     new DefaultAppModuleInfo(OpenconfigInterfaces.class, null))
+                        new DefaultAppModuleInfo(OpenconfigInterfaces.class, null))
                 .put(new DefaultYangModuleId("openconfig-transport-types", "2017-08-16"),
-                     new DefaultAppModuleInfo(OpenconfigTransportTypes.class, null))
+                        new DefaultAppModuleInfo(OpenconfigTransportTypes.class, null))
                 .put(new DefaultYangModuleId("openconfig-types", "2017-08-16"),
-                     new DefaultAppModuleInfo(OpenconfigTypes.class, null))
+                        new DefaultAppModuleInfo(OpenconfigTypes.class, null))
 //                .put(new DefaultYangModuleId("openconfig-extensions", "2017-08-16"),
 //                     new DefaultAppModuleInfo(OpenconfigEx.class, null))
                 .put(new DefaultYangModuleId("ietf-yang-types", "2013-07-15"),
-                     new DefaultAppModuleInfo(IetfYangTypes.class, null))
-
+                        new DefaultAppModuleInfo(IetfYangTypes.class, null))
 
                 // minimum required for the example
                 .put(new DefaultYangModuleId("openconfig-platform-linecard", "2017-08-03"),
-                     new DefaultAppModuleInfo(OpenconfigPlatformLinecard.class, null))
+                        new DefaultAppModuleInfo(OpenconfigPlatformLinecard.class, null))
                 .put(new DefaultYangModuleId("openconfig-platform-port", "2016-10-24"),
-                     new DefaultAppModuleInfo(OpenconfigPlatformPort.class, null))
+                        new DefaultAppModuleInfo(OpenconfigPlatformPort.class, null))
                 .put(new DefaultYangModuleId("openconfig-platform-transceiver", "2017-07-08"),
-                     new DefaultAppModuleInfo(OpenconfigPlatformTransceiver.class, null))
+                        new DefaultAppModuleInfo(OpenconfigPlatformTransceiver.class, null))
                 .put(new DefaultYangModuleId("openconfig-transport-line-common", "2017-07-08"),
-                     new DefaultAppModuleInfo(OpenconfigTransportLineCommon.class, null))
+                        new DefaultAppModuleInfo(OpenconfigTransportLineCommon.class, null))
                 .put(new DefaultYangModuleId("openconfig-terminal-device", "2017-07-08"),
-                     new DefaultAppModuleInfo(OpenconfigTerminalDevice.class, null))
-
+                        new DefaultAppModuleInfo(OpenconfigTerminalDevice.class, null))
                 .build();
     }
 }
