diff --git a/core/src/main/kotlin/Formats/DacHtmlFormat.kt b/core/src/main/kotlin/Formats/DacHtmlFormat.kt
index bc6429b..e239943 100644
--- a/core/src/main/kotlin/Formats/DacHtmlFormat.kt
+++ b/core/src/main/kotlin/Formats/DacHtmlFormat.kt
@@ -281,7 +281,7 @@
     }
 
     override fun FlowContent.classLikeSummaries(page: Page.ClassPage) = with(page) {
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 nestedClasses,
                 header = "Nested classes",
                 summaryId = "nestedclasses",
@@ -291,7 +291,7 @@
             nestedClassSummaryRow(it)
         }
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             attributes,
             header="XML attributes",
             summaryId="lattrs",
@@ -301,7 +301,7 @@
             xmlAttributeRow(it)
         }
 
-        expandableSummaryNodeGroupForInheritedMembers(
+        this@classLikeSummaries.expandableSummaryNodeGroupForInheritedMembers(
                 superClasses = inheritedAttributes.entries,
                 header="Inherited XML attributes",
                 tableId="inhattrs",
@@ -309,7 +309,7 @@
                 row = { inheritedXmlAttributeRow(it)}
         )
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 constants,
                 header = "Constants",
                 summaryId = "constants",
@@ -317,7 +317,7 @@
                 headerAsRow = true
         ) { propertyLikeSummaryRow(it) }
 
-        expandableSummaryNodeGroupForInheritedMembers(
+        this@classLikeSummaries.expandableSummaryNodeGroupForInheritedMembers(
                 superClasses = inheritedConstants.entries,
                 header = "Inherited constants",
                 tableId = "inhconstants",
@@ -326,7 +326,7 @@
         )
 
         constructors.forEach { (visibility, group) ->
-            summaryNodeGroup(
+            this@classLikeSummaries.summaryNodeGroup(
                     group,
                     header = "${visibility.capitalize()} constructors",
                     summaryId = "${visibility.take(3)}ctors",
@@ -337,7 +337,7 @@
             }
         }
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             enumValues,
             header = "Enum values",
             summaryId = "enumvalues",
@@ -348,7 +348,7 @@
         }
 
         functions.forEach { (visibility, group) ->
-            summaryNodeGroup(
+            this@classLikeSummaries.summaryNodeGroup(
                     group,
                     header = "${visibility.capitalize()} methods",
                     summaryId = "${visibility.take(3)}methods",
@@ -359,7 +359,7 @@
             }
         }
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 companionFunctions,
                 header = "Companion functions",
                 summaryId = "compmethods",
@@ -369,7 +369,7 @@
             functionLikeSummaryRow(it)
         }
 
-        expandableSummaryNodeGroupForInheritedMembers(
+        this@classLikeSummaries.expandableSummaryNodeGroupForInheritedMembers(
                 superClasses = inheritedFunctionsByReceiver.entries,
                 header = "Inherited functions",
                 tableId = "inhmethods",
@@ -377,7 +377,7 @@
                 row = { inheritedMemberRow(it) }
         )
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 extensionFunctions.entries,
                 header = "Extension functions",
                 summaryId = "extmethods",
@@ -388,7 +388,7 @@
                 functionLikeSummaryRow(it)
             }
         }
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 inheritedExtensionFunctions.entries,
                 header = "Inherited extension functions",
                 summaryId = "inhextmethods",
@@ -401,7 +401,7 @@
         }
 
         fields.forEach { (visibility, group) ->
-            summaryNodeGroup(
+            this@classLikeSummaries.summaryNodeGroup(
                 group,
                 header = "${visibility.capitalize()} fields",
                 summaryId = "${visibility.take(3)}fields",
@@ -410,7 +410,7 @@
             ) { propertyLikeSummaryRow(it) }
         }
 
-        expandableSummaryNodeGroupForInheritedMembers(
+        this@classLikeSummaries.expandableSummaryNodeGroupForInheritedMembers(
             superClasses = inheritedFieldsByReceiver.entries,
             header = "Inherited fields",
             tableId = "inhfields",
@@ -418,7 +418,7 @@
             row = { inheritedMemberRow(it) }
         )
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 properties,
                 header = "Properties",
                 summaryId = "properties",
@@ -427,7 +427,7 @@
         ) { propertyLikeSummaryRow(it) }
 
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 companionProperties,
                 "Companion properties",
                 headerAsRow = true
@@ -435,7 +435,7 @@
             propertyLikeSummaryRow(it)
         }
 
-        expandableSummaryNodeGroupForInheritedMembers(
+        this@classLikeSummaries.expandableSummaryNodeGroupForInheritedMembers(
                 superClasses = inheritedPropertiesByReceiver.entries,
                 header = "Inherited properties",
                 tableId = "inhfields",
@@ -443,7 +443,7 @@
                 row = { inheritedMemberRow(it) }
         )
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 extensionProperties.entries,
                 "Extension properties",
                 headerAsRow = true
@@ -453,7 +453,7 @@
             }
         }
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
                 inheritedExtensionProperties.entries,
                 "Inherited extension properties",
                 headerAsRow = true
@@ -514,14 +514,14 @@
             bodyContent = {
                 h1 { +page.node.name }
                 nodeContent(page.node)
-                summaryNodeGroup(page.interfaces.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Interfaces", headerAsRow = false) { classLikeRow(it) }
-                summaryNodeGroup(page.classes.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Classes", headerAsRow = false) { classLikeRow(it) }
-                summaryNodeGroup(page.exceptions.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Exceptions", headerAsRow = false) { classLikeRow(it) }
-                summaryNodeGroup(page.typeAliases.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Type-aliases", headerAsRow = false) { classLikeRow(it) }
-                summaryNodeGroup(page.annotations.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Annotations", headerAsRow = false) { classLikeRow(it) }
-                summaryNodeGroup(page.enums.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Enums", headerAsRow = false) { classLikeRow(it) }
+                this@composePage.summaryNodeGroup(page.interfaces.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Interfaces", headerAsRow = false) { classLikeRow(it) }
+                this@composePage.summaryNodeGroup(page.classes.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Classes", headerAsRow = false) { classLikeRow(it) }
+                this@composePage.summaryNodeGroup(page.exceptions.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Exceptions", headerAsRow = false) { classLikeRow(it) }
+                this@composePage.summaryNodeGroup(page.typeAliases.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Type-aliases", headerAsRow = false) { classLikeRow(it) }
+                this@composePage.summaryNodeGroup(page.annotations.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Annotations", headerAsRow = false) { classLikeRow(it) }
+                this@composePage.summaryNodeGroup(page.enums.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Enums", headerAsRow = false) { classLikeRow(it) }
 
-                summaryNodeGroup(
+                this@composePage.summaryNodeGroup(
                         page.constants.sortedBy { it.name },
                         "Top-level constants summary",
                         headerAsRow = false
@@ -529,7 +529,7 @@
                     propertyLikeSummaryRow(it)
                 }
 
-                summaryNodeGroup(
+                this@composePage.summaryNodeGroup(
                         page.functions.sortedBy { it.name },
                         "Top-level functions summary",
                         headerAsRow = false
@@ -537,7 +537,7 @@
                     functionLikeSummaryRow(it)
                 }
 
-                summaryNodeGroup(
+                this@composePage.summaryNodeGroup(
                         page.properties.sortedBy { it.name },
                         "Top-level properties summary",
                         headerAsRow = false
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
index f12128f..2711a2d 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
@@ -392,14 +392,14 @@
         bodyContent = {
             h1 { +page.node.name }
             nodeContent(page.node)
-            summaryNodeGroup(page.interfaces, "Interfaces", headerAsRow = false) { classLikeRow(it) }
-            summaryNodeGroup(page.classes, "Classes", headerAsRow = false) { classLikeRow(it) }
-            summaryNodeGroup(page.exceptions, "Exceptions", headerAsRow = false) { classLikeRow(it) }
-            summaryNodeGroup(page.typeAliases, "Type-aliases", headerAsRow = false) { classLikeRow(it) }
-            summaryNodeGroup(page.annotations, "Annotations", headerAsRow = false) { classLikeRow(it) }
-            summaryNodeGroup(page.enums, "Enums", headerAsRow = false) { classLikeRow(it) }
+            this@composePage.summaryNodeGroup(page.interfaces, "Interfaces", headerAsRow = false) { classLikeRow(it) }
+            this@composePage.summaryNodeGroup(page.classes, "Classes", headerAsRow = false) { classLikeRow(it) }
+            this@composePage.summaryNodeGroup(page.exceptions, "Exceptions", headerAsRow = false) { classLikeRow(it) }
+            this@composePage.summaryNodeGroup(page.typeAliases, "Type-aliases", headerAsRow = false) { classLikeRow(it) }
+            this@composePage.summaryNodeGroup(page.annotations, "Annotations", headerAsRow = false) { classLikeRow(it) }
+            this@composePage.summaryNodeGroup(page.enums, "Enums", headerAsRow = false) { classLikeRow(it) }
 
-            summaryNodeGroup(
+            this@composePage.summaryNodeGroup(
                 page.constants,
                 "Top-level constants summary",
                 headerAsRow = false
@@ -407,7 +407,7 @@
                 propertyLikeSummaryRow(it)
             }
 
-            summaryNodeGroup(
+            this@composePage.summaryNodeGroup(
                 page.functions,
                 "Top-level functions summary",
                 headerAsRow = false
@@ -415,7 +415,7 @@
                 functionLikeSummaryRow(it)
             }
 
-            summaryNodeGroup(
+            this@composePage.summaryNodeGroup(
                 page.properties,
                 "Top-level properties summary",
                 headerAsRow = false
@@ -423,7 +423,7 @@
                 propertyLikeSummaryRow(it)
             }
 
-            summaryNodeGroup(
+            this@composePage.summaryNodeGroup(
                 page.extensionFunctions.entries,
                 "Extension functions summary",
                 headerAsRow = false
@@ -433,7 +433,7 @@
                 }
             }
 
-            summaryNodeGroup(
+            this@composePage.summaryNodeGroup(
                 page.extensionProperties.entries,
                 "Extension properties summary",
                 headerAsRow = false
@@ -528,7 +528,7 @@
     }
 
     protected open fun FlowContent.classLikeSummaries(page: Page.ClassPage) = with(page) {
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             nestedClasses,
             "Nested classes",
             headerAsRow = true
@@ -536,14 +536,14 @@
             nestedClassSummaryRow(it)
         }
 
-        summaryNodeGroup(enumValues, "Enum values") {
+        this@classLikeSummaries.summaryNodeGroup(enumValues, "Enum values") {
             propertyLikeSummaryRow(it)
         }
 
-        summaryNodeGroup(constants, "Constants") { propertyLikeSummaryRow(it) }
+        this@classLikeSummaries.summaryNodeGroup(constants, "Constants") { propertyLikeSummaryRow(it) }
 
         constructors.forEach { (visibility, group) ->
-            summaryNodeGroup(
+            this@classLikeSummaries.summaryNodeGroup(
                     group,
                     "${visibility.capitalize()} constructors",
                     headerAsRow = true
@@ -553,7 +553,7 @@
         }
 
         functions.forEach { (visibility, group) ->
-            summaryNodeGroup(
+            this@classLikeSummaries.summaryNodeGroup(
                     group,
                     "${visibility.capitalize()} functions",
                     headerAsRow = true
@@ -562,14 +562,14 @@
             }
         }
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             companionFunctions,
             "Companion functions",
             headerAsRow = true
         ) {
             functionLikeSummaryRow(it)
         }
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             inheritedFunctionsByReceiver.entries,
             "Inherited functions",
             headerAsRow = true
@@ -578,7 +578,7 @@
                 functionLikeSummaryRow(it)
             }
         }
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             extensionFunctions.entries,
             "Extension functions",
             headerAsRow = true
@@ -587,7 +587,7 @@
                 functionLikeSummaryRow(it)
             }
         }
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             inheritedExtensionFunctions.entries,
             "Inherited extension functions",
             headerAsRow = true
@@ -598,8 +598,8 @@
         }
 
 
-        summaryNodeGroup(properties, "Properties", headerAsRow = true) { propertyLikeSummaryRow(it) }
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(properties, "Properties", headerAsRow = true) { propertyLikeSummaryRow(it) }
+        this@classLikeSummaries.summaryNodeGroup(
             companionProperties,
             "Companion properties",
             headerAsRow = true
@@ -607,7 +607,7 @@
             propertyLikeSummaryRow(it)
         }
 
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             inheritedPropertiesByReceiver.entries,
             "Inherited properties",
             headerAsRow = true
@@ -616,7 +616,7 @@
                 propertyLikeSummaryRow(it)
             }
         }
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             extensionProperties.entries,
             "Extension properties",
             headerAsRow = true
@@ -625,7 +625,7 @@
                 propertyLikeSummaryRow(it)
             }
         }
-        summaryNodeGroup(
+        this@classLikeSummaries.summaryNodeGroup(
             inheritedExtensionProperties.entries,
             "Inherited extension properties",
             headerAsRow = true
