diff --git a/example-schema.yang b/example-schema.yang
index 4074172..172f78a 100644
--- a/example-schema.yang
+++ b/example-schema.yang
@@ -28,4 +28,18 @@
         presence true;
     }
 
+    grouping upAndDown {
+        leaf up {
+            type boolean;
+        }
+        leaf down {
+            type boolean;
+        }
+    }
+
+    uses upAndDown;
+
+    container lol {
+        uses upAndDown;
+    }
 }
diff --git a/src/yang_schema.cpp b/src/yang_schema.cpp
index bab4715..3512baf 100644
--- a/src/yang_schema.cpp
+++ b/src/yang_schema.cpp
@@ -284,9 +284,7 @@
         const auto absolutePath = "/" + pathToAbsoluteSchemaString(path);
         const auto set = m_context->find_path(absolutePath.c_str());
         const auto schemaSet = set->schema();
-        for (auto it = (*schemaSet.begin())->child(); it; it = it->next()) {
-            nodes.push_back(it);
-        }
+        nodes = (*schemaSet.begin())->child_instantiables(0);
     }
 
     for (const auto node : nodes) {
diff --git a/tests/yang.cpp b/tests/yang.cpp
index f22bbbe..6793250 100644
--- a/tests/yang.cpp
+++ b/tests/yang.cpp
@@ -184,6 +184,28 @@
             type string;
         }
     }
+
+    grouping arithmeticFlags {
+        leaf carry {
+            type boolean;
+        }
+        leaf zero {
+            type boolean;
+        }
+    }
+
+    grouping flags {
+        leaf direction {
+            type boolean;
+        }
+        leaf interrupt {
+            type boolean;
+        }
+
+        uses arithmeticFlags;
+    }
+
+    uses flags;
 })";
 
 TEST_CASE("yangschema")
@@ -232,6 +254,30 @@
                 node.second = "leafa";
             }
 
+            SECTION("example-schema:carry")
+            {
+                node.first = "example-schema";
+                node.second = "carry";
+            }
+
+            SECTION("example-schema:zero")
+            {
+                node.first = "example-schema";
+                node.second = "zero";
+            }
+
+            SECTION("example-schema:direction")
+            {
+                node.first = "example-schema";
+                node.second = "direction";
+            }
+
+            SECTION("example-schema:interrupt")
+            {
+                node.first = "example-schema";
+                node.second = "interrupt";
+            }
+
             REQUIRE(ys.isLeaf(path, node));
         }
         SECTION("isModule")
@@ -531,7 +577,9 @@
                        "example-schema:leafUint", "example-schema:leafEnum", "example-schema:leafEnumTypedef",
                        "example-schema:leafEnumTypedefRestricted", "example-schema:leafEnumTypedefRestricted2",
                        "example-schema:foodIdentLeaf", "example-schema:pizzaIdentLeaf", "example-schema:foodDrinkIdentLeaf",
-                       "example-schema:_list", "example-schema:twoKeyList", "second-schema:bla"};
+                       "example-schema:_list", "example-schema:twoKeyList", "second-schema:bla",
+                       "example-schema:carry", "example-schema:zero", "example-schema:direction",
+                       "example-schema:interrupt"};
             }
 
             SECTION("example-schema:a")
@@ -648,5 +696,25 @@
             }
             REQUIRE_FALSE(ys.leafIdentityIsValid(path, node, value));
         }
+
+        SECTION("grouping is not a node")
+        {
+            SECTION("example-schema:arithmeticFlags")
+            {
+                node.first = "example-schema";
+                node.second = "arithmeticFlags";
+            }
+
+            SECTION("example-schema:flags")
+            {
+                node.first = "example-schema";
+                node.second = "startAndStop";
+            }
+
+            REQUIRE(!ys.isPresenceContainer(path, node));
+            REQUIRE(!ys.isList(path, node));
+            REQUIRE(!ys.isLeaf(path, node));
+            REQUIRE(!ys.isContainer(path, node));
+        }
     }
 }
