diff --git a/code/CMSBatchActions.php b/code/batchactions/CMSBatchActions.php similarity index 100% rename from code/CMSBatchActions.php rename to code/batchactions/CMSBatchActions.php diff --git a/code/AssetAdmin.php b/code/controller/AssetAdmin.php similarity index 100% rename from code/AssetAdmin.php rename to code/controller/AssetAdmin.php diff --git a/code/CMSMain.php b/code/controller/CMSMain.php similarity index 100% rename from code/CMSMain.php rename to code/controller/CMSMain.php diff --git a/code/CMSSiteTreeFilter.php b/code/controller/CMSSiteTreeFilter.php similarity index 100% rename from code/CMSSiteTreeFilter.php rename to code/controller/CMSSiteTreeFilter.php diff --git a/code/ContentController.php b/code/controller/ContentController.php similarity index 100% rename from code/ContentController.php rename to code/controller/ContentController.php diff --git a/code/ModelAsController.php b/code/controller/ModelAsController.php similarity index 100% rename from code/ModelAsController.php rename to code/controller/ModelAsController.php diff --git a/code/NestedController.php b/code/controller/NestedController.php similarity index 100% rename from code/NestedController.php rename to code/controller/NestedController.php diff --git a/code/ReportAdmin.php b/code/controller/ReportAdmin.php similarity index 100% rename from code/ReportAdmin.php rename to code/controller/ReportAdmin.php diff --git a/code/RootURLController.php b/code/controller/RootURLController.php similarity index 100% rename from code/RootURLController.php rename to code/controller/RootURLController.php diff --git a/code/SilverStripeNavigatorItem.php b/code/controller/SilverStripeNavigatorItem.php similarity index 100% rename from code/SilverStripeNavigatorItem.php rename to code/controller/SilverStripeNavigatorItem.php diff --git a/code/StaticExporter.php b/code/controller/StaticExporter.php similarity index 100% rename from code/StaticExporter.php rename to code/controller/StaticExporter.php diff --git a/code/AssetTableField.php b/code/forms/AssetTableField.php similarity index 100% rename from code/AssetTableField.php rename to code/forms/AssetTableField.php diff --git a/code/CMSActionOptionsForm.php b/code/forms/CMSActionOptionsForm.php similarity index 100% rename from code/CMSActionOptionsForm.php rename to code/forms/CMSActionOptionsForm.php diff --git a/code/FileList.php b/code/forms/FileList.php similarity index 100% rename from code/FileList.php rename to code/forms/FileList.php diff --git a/code/FolderUnusedAssetsField.php b/code/forms/FolderUnusedAssetsField.php similarity index 100% rename from code/FolderUnusedAssetsField.php rename to code/forms/FolderUnusedAssetsField.php diff --git a/code/ThumbnailStripField.php b/code/forms/ThumbnailStripField.php similarity index 100% rename from code/ThumbnailStripField.php rename to code/forms/ThumbnailStripField.php diff --git a/code/CurrentPageIdentifier.php b/code/model/CurrentPageIdentifier.php similarity index 100% rename from code/CurrentPageIdentifier.php rename to code/model/CurrentPageIdentifier.php diff --git a/code/ErrorPage.php b/code/model/ErrorPage.php similarity index 100% rename from code/ErrorPage.php rename to code/model/ErrorPage.php diff --git a/code/RedirectorPage.php b/code/model/RedirectorPage.php similarity index 100% rename from code/RedirectorPage.php rename to code/model/RedirectorPage.php diff --git a/code/SiteConfig.php b/code/model/SiteConfig.php similarity index 100% rename from code/SiteConfig.php rename to code/model/SiteConfig.php diff --git a/code/SiteTree.php b/code/model/SiteTree.php similarity index 100% rename from code/SiteTree.php rename to code/model/SiteTree.php diff --git a/code/SiteTreeDecorator.php b/code/model/SiteTreeDecorator.php similarity index 100% rename from code/SiteTreeDecorator.php rename to code/model/SiteTreeDecorator.php diff --git a/code/SiteTreeFileDecorator.php b/code/model/SiteTreeFileDecorator.php similarity index 100% rename from code/SiteTreeFileDecorator.php rename to code/model/SiteTreeFileDecorator.php diff --git a/code/SiteTreeFolderDecorator.php b/code/model/SiteTreeFolderDecorator.php similarity index 100% rename from code/SiteTreeFolderDecorator.php rename to code/model/SiteTreeFolderDecorator.php diff --git a/code/VirtualPage.php b/code/model/VirtualPage.php similarity index 100% rename from code/VirtualPage.php rename to code/model/VirtualPage.php diff --git a/code/Report.php b/code/reports/Report.php similarity index 100% rename from code/Report.php rename to code/reports/Report.php diff --git a/code/SideReport.php b/code/reports/SideReport.php similarity index 100% rename from code/SideReport.php rename to code/reports/SideReport.php diff --git a/code/AdvancedSearchForm.php b/code/search/AdvancedSearchForm.php similarity index 100% rename from code/AdvancedSearchForm.php rename to code/search/AdvancedSearchForm.php diff --git a/code/ContentControllerSearchExtension.php b/code/search/ContentControllerSearchExtension.php similarity index 100% rename from code/ContentControllerSearchExtension.php rename to code/search/ContentControllerSearchExtension.php diff --git a/code/SearchForm.php b/code/search/SearchForm.php similarity index 100% rename from code/SearchForm.php rename to code/search/SearchForm.php diff --git a/code/Widget.php b/code/widgets/Widget.php similarity index 100% rename from code/Widget.php rename to code/widgets/Widget.php diff --git a/code/WidgetArea.php b/code/widgets/WidgetArea.php similarity index 100% rename from code/WidgetArea.php rename to code/widgets/WidgetArea.php diff --git a/code/WidgetAreaEditor.php b/code/widgets/WidgetAreaEditor.php similarity index 100% rename from code/WidgetAreaEditor.php rename to code/widgets/WidgetAreaEditor.php diff --git a/tests/CMSMainTest.php b/tests/controller/CMSMainTest.php similarity index 100% rename from tests/CMSMainTest.php rename to tests/controller/CMSMainTest.php diff --git a/tests/CMSMainTest.yml b/tests/controller/CMSMainTest.yml similarity index 100% rename from tests/CMSMainTest.yml rename to tests/controller/CMSMainTest.yml diff --git a/tests/CMSSiteTreeFilterTest.php b/tests/controller/CMSSiteTreeFilterTest.php similarity index 100% rename from tests/CMSSiteTreeFilterTest.php rename to tests/controller/CMSSiteTreeFilterTest.php diff --git a/tests/CMSSiteTreeFilterTest.yml b/tests/controller/CMSSiteTreeFilterTest.yml similarity index 100% rename from tests/CMSSiteTreeFilterTest.yml rename to tests/controller/CMSSiteTreeFilterTest.yml diff --git a/tests/ContentControllerPermissionsTest.php b/tests/controller/ContentControllerPermissionsTest.php similarity index 100% rename from tests/ContentControllerPermissionsTest.php rename to tests/controller/ContentControllerPermissionsTest.php diff --git a/tests/ContentControllerSearchExtensionTest.php b/tests/controller/ContentControllerSearchExtensionTest.php similarity index 100% rename from tests/ContentControllerSearchExtensionTest.php rename to tests/controller/ContentControllerSearchExtensionTest.php diff --git a/tests/ContentControllerTest.php b/tests/controller/ContentControllerTest.php similarity index 100% rename from tests/ContentControllerTest.php rename to tests/controller/ContentControllerTest.php diff --git a/tests/ContentControllerTest.yml b/tests/controller/ContentControllerTest.yml similarity index 100% rename from tests/ContentControllerTest.yml rename to tests/controller/ContentControllerTest.yml diff --git a/tests/ModelAsControllerTest.php b/tests/controller/ModelAsControllerTest.php similarity index 100% rename from tests/ModelAsControllerTest.php rename to tests/controller/ModelAsControllerTest.php diff --git a/tests/ModelAsControllerTest.yml b/tests/controller/ModelAsControllerTest.yml similarity index 100% rename from tests/ModelAsControllerTest.yml rename to tests/controller/ModelAsControllerTest.yml diff --git a/tests/RootURLControllerTest.php b/tests/controller/RootURLControllerTest.php similarity index 100% rename from tests/RootURLControllerTest.php rename to tests/controller/RootURLControllerTest.php diff --git a/tests/RootURLControllerTest.yml b/tests/controller/RootURLControllerTest.yml similarity index 100% rename from tests/RootURLControllerTest.yml rename to tests/controller/RootURLControllerTest.yml diff --git a/tests/ErrorPageTest.php b/tests/model/ErrorPageTest.php similarity index 100% rename from tests/ErrorPageTest.php rename to tests/model/ErrorPageTest.php diff --git a/tests/ErrorPageTest.yml b/tests/model/ErrorPageTest.yml similarity index 100% rename from tests/ErrorPageTest.yml rename to tests/model/ErrorPageTest.yml diff --git a/tests/FileLinkTrackingTest.php b/tests/model/FileLinkTrackingTest.php similarity index 100% rename from tests/FileLinkTrackingTest.php rename to tests/model/FileLinkTrackingTest.php diff --git a/tests/FileLinkTrackingTest.yml b/tests/model/FileLinkTrackingTest.yml similarity index 100% rename from tests/FileLinkTrackingTest.yml rename to tests/model/FileLinkTrackingTest.yml diff --git a/tests/RedirectorPageTest.php b/tests/model/RedirectorPageTest.php similarity index 100% rename from tests/RedirectorPageTest.php rename to tests/model/RedirectorPageTest.php diff --git a/tests/RedirectorPageTest.yml b/tests/model/RedirectorPageTest.yml similarity index 100% rename from tests/RedirectorPageTest.yml rename to tests/model/RedirectorPageTest.yml diff --git a/tests/SiteConfigTest.php b/tests/model/SiteConfigTest.php similarity index 100% rename from tests/SiteConfigTest.php rename to tests/model/SiteConfigTest.php diff --git a/tests/SiteTreeActionsTest.php b/tests/model/SiteTreeActionsTest.php similarity index 100% rename from tests/SiteTreeActionsTest.php rename to tests/model/SiteTreeActionsTest.php diff --git a/tests/SiteTreeActionsTest.yml b/tests/model/SiteTreeActionsTest.yml similarity index 100% rename from tests/SiteTreeActionsTest.yml rename to tests/model/SiteTreeActionsTest.yml diff --git a/tests/SiteTreeBacklinksTest.php b/tests/model/SiteTreeBacklinksTest.php similarity index 100% rename from tests/SiteTreeBacklinksTest.php rename to tests/model/SiteTreeBacklinksTest.php diff --git a/tests/SiteTreeBacklinksTest.yml b/tests/model/SiteTreeBacklinksTest.yml similarity index 100% rename from tests/SiteTreeBacklinksTest.yml rename to tests/model/SiteTreeBacklinksTest.yml diff --git a/tests/SiteTreeBrokenLinksTest.php b/tests/model/SiteTreeBrokenLinksTest.php similarity index 100% rename from tests/SiteTreeBrokenLinksTest.php rename to tests/model/SiteTreeBrokenLinksTest.php diff --git a/tests/SiteTreeBrokenLinksTest.yml b/tests/model/SiteTreeBrokenLinksTest.yml similarity index 100% rename from tests/SiteTreeBrokenLinksTest.yml rename to tests/model/SiteTreeBrokenLinksTest.yml diff --git a/tests/SiteTreeHTMLEditorFieldTest.php b/tests/model/SiteTreeHTMLEditorFieldTest.php similarity index 100% rename from tests/SiteTreeHTMLEditorFieldTest.php rename to tests/model/SiteTreeHTMLEditorFieldTest.php diff --git a/tests/SiteTreeHtmlEditorFieldTest.yml b/tests/model/SiteTreeHtmlEditorFieldTest.yml similarity index 100% rename from tests/SiteTreeHtmlEditorFieldTest.yml rename to tests/model/SiteTreeHtmlEditorFieldTest.yml diff --git a/tests/SiteTreePermissionsTest.php b/tests/model/SiteTreePermissionsTest.php similarity index 100% rename from tests/SiteTreePermissionsTest.php rename to tests/model/SiteTreePermissionsTest.php diff --git a/tests/SiteTreePermissionsTest.yml b/tests/model/SiteTreePermissionsTest.yml similarity index 100% rename from tests/SiteTreePermissionsTest.yml rename to tests/model/SiteTreePermissionsTest.yml diff --git a/tests/SiteTreeTest.php b/tests/model/SiteTreeTest.php similarity index 100% rename from tests/SiteTreeTest.php rename to tests/model/SiteTreeTest.php diff --git a/tests/SiteTreeTest.yml b/tests/model/SiteTreeTest.yml similarity index 100% rename from tests/SiteTreeTest.yml rename to tests/model/SiteTreeTest.yml diff --git a/tests/VirtualPageTest.php b/tests/model/VirtualPageTest.php similarity index 100% rename from tests/VirtualPageTest.php rename to tests/model/VirtualPageTest.php diff --git a/tests/VirtualPageTest.yml b/tests/model/VirtualPageTest.yml similarity index 100% rename from tests/VirtualPageTest.yml rename to tests/model/VirtualPageTest.yml diff --git a/tests/SSReportTest.php b/tests/reports/SSReportTest.php similarity index 100% rename from tests/SSReportTest.php rename to tests/reports/SSReportTest.php diff --git a/tests/SideReportTest.php b/tests/reports/SideReportTest.php similarity index 100% rename from tests/SideReportTest.php rename to tests/reports/SideReportTest.php diff --git a/tests/SideReportTest.yml b/tests/reports/SideReportTest.yml similarity index 100% rename from tests/SideReportTest.yml rename to tests/reports/SideReportTest.yml diff --git a/tests/CMSMainSearchFormTest.php b/tests/search/CMSMainSearchFormTest.php similarity index 100% rename from tests/CMSMainSearchFormTest.php rename to tests/search/CMSMainSearchFormTest.php diff --git a/tests/SearchFormTest.php b/tests/search/SearchFormTest.php similarity index 100% rename from tests/SearchFormTest.php rename to tests/search/SearchFormTest.php diff --git a/tests/SearchFormTest.yml b/tests/search/SearchFormTest.yml similarity index 100% rename from tests/SearchFormTest.yml rename to tests/search/SearchFormTest.yml diff --git a/tests/FilesystemPublisherTest.php b/tests/staticpublisher/FilesystemPublisherTest.php similarity index 100% rename from tests/FilesystemPublisherTest.php rename to tests/staticpublisher/FilesystemPublisherTest.php diff --git a/tests/MigrateSiteTreeLinkingTaskTest.php b/tests/tasks/MigrateSiteTreeLinkingTaskTest.php similarity index 100% rename from tests/MigrateSiteTreeLinkingTaskTest.php rename to tests/tasks/MigrateSiteTreeLinkingTaskTest.php diff --git a/tests/MigrateSiteTreeLinkingTaskTest.yml b/tests/tasks/MigrateSiteTreeLinkingTaskTest.yml similarity index 100% rename from tests/MigrateSiteTreeLinkingTaskTest.yml rename to tests/tasks/MigrateSiteTreeLinkingTaskTest.yml diff --git a/tests/RemoveOrphanedPagesTaskTest.php b/tests/tasks/RemoveOrphanedPagesTaskTest.php similarity index 100% rename from tests/RemoveOrphanedPagesTaskTest.php rename to tests/tasks/RemoveOrphanedPagesTaskTest.php diff --git a/tests/RemoveOrphanedPagesTaskTest.yml b/tests/tasks/RemoveOrphanedPagesTaskTest.yml similarity index 100% rename from tests/RemoveOrphanedPagesTaskTest.yml rename to tests/tasks/RemoveOrphanedPagesTaskTest.yml diff --git a/tests/WidgetAreaEditorTest.php b/tests/widgets/WidgetAreaEditorTest.php similarity index 100% rename from tests/WidgetAreaEditorTest.php rename to tests/widgets/WidgetAreaEditorTest.php diff --git a/tests/WidgetControllerTest.php b/tests/widgets/WidgetControllerTest.php similarity index 100% rename from tests/WidgetControllerTest.php rename to tests/widgets/WidgetControllerTest.php diff --git a/tests/WidgetControllerTest.yml b/tests/widgets/WidgetControllerTest.yml similarity index 100% rename from tests/WidgetControllerTest.yml rename to tests/widgets/WidgetControllerTest.yml diff --git a/tests/WidgetControllerTestPage.php b/tests/widgets/WidgetControllerTestPage.php similarity index 100% rename from tests/WidgetControllerTestPage.php rename to tests/widgets/WidgetControllerTestPage.php diff --git a/tests/WidgetControllerTestPage.ss b/tests/widgets/WidgetControllerTestPage.ss similarity index 100% rename from tests/WidgetControllerTestPage.ss rename to tests/widgets/WidgetControllerTestPage.ss diff --git a/tests/WidgetControllerTest_Widget.ss b/tests/widgets/WidgetControllerTest_Widget.ss similarity index 100% rename from tests/WidgetControllerTest_Widget.ss rename to tests/widgets/WidgetControllerTest_Widget.ss