diff --git a/ui/src/core/templateMap.ts b/ui/src/core/templateMap.ts
index 3b8cca20c..51812a0e0 100644
--- a/ui/src/core/templateMap.ts
+++ b/ui/src/core/templateMap.ts
@@ -1,46 +1,51 @@
// Maps Streamsync component types to renderable Vue components
-
-import CorePage from "../core_components/CorePage.vue";
-import CoreSidebar from "../core_components/CoreSidebar.vue";
-import CoreText from "../core_components/CoreText.vue";
-import CoreButton from "../core_components/CoreButton.vue";
-import CoreIcon from "../core_components/CoreIcon.vue";
-import CoreSection from "../core_components/CoreSection.vue";
-import CoreHeader from "../core_components/CoreHeader.vue";
-import CoreHeading from "../core_components/CoreHeading.vue";
-import CoreDataframe from "../core_components/CoreDataframe.vue";
-import CoreHtml from "../core_components/CoreHtml.vue";
-import CorePagination from "../core_components/CorePagination.vue";
-import CoreRepeater from "../core_components/CoreRepeater.vue";
-import CoreColumn from "../core_components/CoreColumn.vue";
-import CoreColumns from "../core_components/CoreColumns.vue";
-import CoreHorizontalStack from "../core_components/CoreHorizontalStack.vue";
-import CoreSeparator from "../core_components/CoreSeparator.vue";
-import CoreTab from "../core_components/CoreTab.vue";
-import CoreTabs from "../core_components/CoreTabs.vue";
-import CoreImage from "../core_components/CoreImage.vue";
-import CorePDF from "../core_components/embed/CorePDF.vue";
-import CoreIFrame from "../core_components/embed/CoreIFrame.vue";
-import CoreGoogleMaps from "../core_components/embed/CoreGoogleMaps.vue";
-import CoreTimer from "../core_components/CoreTimer.vue";
-import CoreWebcamCapture from "../core_components/CoreWebcamCapture.vue";
-import CoreVegaLiteChart from "../core_components/CoreVegaLiteChart.vue";
-import CorePlotlyGraph from "../core_components/CorePlotlyGraph.vue";
-import CoreRoot from "../core_components/CoreRoot.vue";
-import CoreTextInput from "../core_components/input/CoreTextInput.vue";
-import CoreTextareaInput from "../core_components/input/CoreTextareaInput.vue";
-import CoreNumberInput from "../core_components/input/CoreNumberInput.vue";
-import CoreSliderInput from "../core_components/input/CoreSliderInput.vue";
+// content
+import CoreDataframe from "../core_components/content/CoreDataframe.vue";
+import CoreHeading from "../core_components/content/CoreHeading.vue";
+import CoreIcon from "../core_components/content/CoreIcon.vue";
+import CoreImage from "../core_components/content/CoreImage.vue";
+import CoreMessage from "../core_components/content/CoreMessage.vue";
+import CoreMetric from "../core_components/content/CoreMetric.vue";
+import CorePlotlyGraph from "../core_components/content/CorePlotlyGraph.vue";
+import CoreText from "../core_components/content/CoreText.vue";
+import CoreVegaLiteChart from "../core_components/content/CoreVegaLiteChart.vue";
+import CoreVideoPlayer from "../core_components/content/CoreVideoPlayer.vue";
+// input
+import CoreCheckboxInput from "../core_components/input/CoreCheckboxInput.vue";
import CoreDateInput from "../core_components/input/CoreDateInput.vue";
-import CoreRadioInput from "../core_components/input/CoreRadioInput.vue";
import CoreDropdownInput from "../core_components/input/CoreDropdownInput.vue";
-import CoreSelectInput from "../core_components/input/CoreSelectInput.vue";
-import CoreMultiselectInput from "../core_components/input/CoreMultiselectInput.vue";
-import CoreCheckboxInput from "../core_components/input/CoreCheckboxInput.vue";
import CoreFileInput from "../core_components/input/CoreFileInput.vue";
-import CoreMetric from "../core_components/CoreMetric.vue";
-import CoreMessage from "../core_components/CoreMessage.vue";
-import CoreVideoPlayer from "../core_components/CoreVideoPlayer.vue";
+import CoreMultiselectInput from "../core_components/input/CoreMultiselectInput.vue";
+import CoreNumberInput from "../core_components/input/CoreNumberInput.vue";
+import CoreRadioInput from "../core_components/input/CoreRadioInput.vue";
+import CoreSelectInput from "../core_components/input/CoreSelectInput.vue";
+import CoreSliderInput from "../core_components/input/CoreSliderInput.vue";
+import CoreTextInput from "../core_components/input/CoreTextInput.vue";
+import CoreTextareaInput from "../core_components/input/CoreTextareaInput.vue";
+// layout
+import CoreColumn from "../core_components/layout/CoreColumn.vue";
+import CoreColumns from "../core_components/layout/CoreColumns.vue";
+import CoreHeader from "../core_components/layout/CoreHeader.vue";
+import CoreHorizontalStack from "../core_components/layout/CoreHorizontalStack.vue";
+import CoreSection from "../core_components/layout/CoreSection.vue";
+import CoreSeparator from "../core_components/layout/CoreSeparator.vue";
+import CoreSidebar from "../core_components/layout/CoreSidebar.vue";
+import CoreTab from "../core_components/layout/CoreTab.vue";
+import CoreTabs from "../core_components/layout/CoreTabs.vue";
+// other
+import CoreButton from "../core_components/other/CoreButton.vue";
+import CoreHtml from "../core_components/other/CoreHtml.vue";
+import CorePagination from "../core_components/other/CorePagination.vue";
+import CoreRepeater from "../core_components/other/CoreRepeater.vue";
+import CoreTimer from "../core_components/other/CoreTimer.vue";
+import CoreWebcamCapture from "../core_components/other/CoreWebcamCapture.vue";
+// embed
+import CorePDF from "../core_components/embed/CorePDF.vue";
+import CoreIFrame from "../core_components/embed/CoreIFrame.vue";
+import CoreGoogleMaps from "../core_components/embed/CoreGoogleMaps.vue";
+// root
+import CorePage from "../core_components/root/CorePage.vue";
+import CoreRoot from "../core_components/root/CoreRoot.vue";
import { StreamsyncComponentDefinition } from "../streamsyncTypes";
import { h } from "vue";
diff --git a/ui/src/core_components/CoreDataframe.vue b/ui/src/core_components/content/CoreDataframe.vue
similarity index 98%
rename from ui/src/core_components/CoreDataframe.vue
rename to ui/src/core_components/content/CoreDataframe.vue
index 4b8c44513..0f8717f49 100644
--- a/ui/src/core_components/CoreDataframe.vue
+++ b/ui/src/core_components/content/CoreDataframe.vue
@@ -96,13 +96,13 @@