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