diff --git a/redfish-core/include/redfish.hpp b/redfish-core/include/redfish.hpp
index 89d5679..38a0296 100644
--- a/redfish-core/include/redfish.hpp
+++ b/redfish-core/include/redfish.hpp
@@ -1,62 +1,6 @@
-/*
-// Copyright (c) 2018-2019 Intel Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-*/
 #pragma once
 
-#include "account_service.hpp"
-#include "aggregation_service.hpp"
-#include "bios.hpp"
-#include "cable.hpp"
-#include "certificate_service.hpp"
-#include "chassis.hpp"
-#include "environment_metrics.hpp"
-#include "ethernet.hpp"
-#include "event_service.hpp"
-#include "eventservice_sse.hpp"
-#include "fabric_adapters.hpp"
-#include "fan.hpp"
-#include "hypervisor_system.hpp"
-#include "log_services.hpp"
-#include "manager_diagnostic_data.hpp"
-#include "managers.hpp"
-#include "memory.hpp"
-#include "message_registries.hpp"
-#include "metric_report.hpp"
-#include "metric_report_definition.hpp"
-#include "network_protocol.hpp"
-#include "pcie.hpp"
-#include "pcie_slots.hpp"
-#include "power.hpp"
-#include "power_subsystem.hpp"
-#include "power_supply.hpp"
-#include "processor.hpp"
-#include "redfish_sessions.hpp"
-#include "redfish_v1.hpp"
-#include "roles.hpp"
-#include "sensors.hpp"
-#include "service_root.hpp"
-#include "storage.hpp"
-#include "systems.hpp"
-#include "task.hpp"
-#include "telemetry_service.hpp"
-#include "thermal.hpp"
-#include "thermal_metrics.hpp"
-#include "thermal_subsystem.hpp"
-#include "trigger.hpp"
-#include "update_service.hpp"
-#include "virtual_media.hpp"
+#include "app.hpp"
 
 namespace redfish
 {
@@ -73,182 +17,7 @@
      *
      * @param[in] app   Crow app on which Redfish will initialize
      */
-    explicit RedfishService(App& app)
-    {
-        requestAccountServiceRoutes(app);
-#ifdef BMCWEB_ENABLE_REDFISH_AGGREGATION
-        requestRoutesAggregationService(app);
-        requestRoutesAggregationSourceCollection(app);
-        requestRoutesAggregationSource(app);
-#endif
-        requestRoutesRoles(app);
-        requestRoutesRoleCollection(app);
-        requestRoutesServiceRoot(app);
-        requestRoutesNetworkProtocol(app);
-        requestRoutesSession(app);
-        requestEthernetInterfacesRoutes(app);
-#ifdef BMCWEB_ALLOW_DEPRECATED_POWER_THERMAL
-        requestRoutesThermal(app);
-        requestRoutesPower(app);
-#endif
-#ifdef BMCWEB_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM
-        requestRoutesEnvironmentMetrics(app);
-        requestRoutesPowerSubsystem(app);
-        requestRoutesPowerSupply(app);
-        requestRoutesPowerSupplyCollection(app);
-        requestRoutesThermalMetrics(app);
-        requestRoutesThermalSubsystem(app);
-        requestRoutesFan(app);
-        requestRoutesFanCollection(app);
-#endif
-        requestRoutesManagerCollection(app);
-        requestRoutesManager(app);
-        requestRoutesManagerResetAction(app);
-        requestRoutesManagerResetActionInfo(app);
-        requestRoutesManagerResetToDefaultsAction(app);
-        requestRoutesManagerDiagnosticData(app);
-        requestRoutesChassisCollection(app);
-        requestRoutesChassis(app);
-        requestRoutesChassisResetAction(app);
-        requestRoutesChassisResetActionInfo(app);
-        requestRoutesChassisDrive(app);
-        requestRoutesChassisDriveName(app);
-        requestRoutesUpdateService(app);
-        requestRoutesStorageCollection(app);
-        requestRoutesStorage(app);
-        requestRoutesStorageControllerCollection(app);
-        requestRoutesStorageController(app);
-        requestRoutesDrive(app);
-        requestRoutesCable(app);
-        requestRoutesCableCollection(app);
-#ifdef BMCWEB_INSECURE_ENABLE_REDFISH_FW_TFTP_UPDATE
-        requestRoutesUpdateServiceActionsSimpleUpdate(app);
-#endif
-        requestRoutesSoftwareInventoryCollection(app);
-        requestRoutesSoftwareInventory(app);
-
-        requestRoutesSystemLogServiceCollection(app);
-        requestRoutesEventLogService(app);
-        requestRoutesPostCodesEntryAdditionalData(app);
-
-        requestRoutesPostCodesLogService(app);
-        requestRoutesPostCodesClear(app);
-        requestRoutesPostCodesEntry(app);
-        requestRoutesPostCodesEntryCollection(app);
-
-#ifdef BMCWEB_ENABLE_REDFISH_DUMP_LOG
-        requestRoutesSystemDumpService(app);
-        requestRoutesSystemDumpEntryCollection(app);
-        requestRoutesSystemDumpEntry(app);
-        requestRoutesSystemDumpCreate(app);
-        requestRoutesSystemDumpClear(app);
-
-        requestRoutesBMCDumpService(app);
-        requestRoutesBMCDumpEntryCollection(app);
-        requestRoutesBMCDumpEntry(app);
-        requestRoutesBMCDumpEntryDownload(app);
-        requestRoutesBMCDumpCreate(app);
-        requestRoutesBMCDumpClear(app);
-
-        requestRoutesFaultLogDumpService(app);
-        requestRoutesFaultLogDumpEntryCollection(app);
-        requestRoutesFaultLogDumpEntry(app);
-        requestRoutesFaultLogDumpClear(app);
-#endif
-
-#ifndef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES
-        requestRoutesJournalEventLogEntryCollection(app);
-        requestRoutesJournalEventLogEntry(app);
-        requestRoutesJournalEventLogClear(app);
-#endif
-
-        requestRoutesBMCLogServiceCollection(app);
-#ifdef BMCWEB_ENABLE_REDFISH_BMC_JOURNAL
-        requestRoutesBMCJournalLogService(app);
-        requestRoutesBMCJournalLogEntryCollection(app);
-        requestRoutesBMCJournalLogEntry(app);
-#endif
-
-#ifdef BMCWEB_ENABLE_REDFISH_CPU_LOG
-        requestRoutesCrashdumpService(app);
-        requestRoutesCrashdumpEntryCollection(app);
-        requestRoutesCrashdumpEntry(app);
-        requestRoutesCrashdumpFile(app);
-        requestRoutesCrashdumpClear(app);
-        requestRoutesCrashdumpCollect(app);
-#endif // BMCWEB_ENABLE_REDFISH_CPU_LOG
-
-        requestRoutesProcessorCollection(app);
-        requestRoutesProcessor(app);
-        requestRoutesOperatingConfigCollection(app);
-        requestRoutesOperatingConfig(app);
-        requestRoutesMemoryCollection(app);
-        requestRoutesMemory(app);
-
-        requestRoutesSystems(app);
-
-        requestRoutesBiosService(app);
-        requestRoutesBiosReset(app);
-
-#ifdef BMCWEB_ENABLE_VM_NBDPROXY
-        requestNBDVirtualMediaRoutes(app);
-#endif // BMCWEB_ENABLE_VM_NBDPROXY
-
-#ifdef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES
-        requestRoutesDBusLogServiceActionsClear(app);
-        requestRoutesDBusEventLogEntryCollection(app);
-        requestRoutesDBusEventLogEntry(app);
-        requestRoutesDBusEventLogEntryDownload(app);
-#endif
-
-#ifdef BMCWEB_ENABLE_REDFISH_HOST_LOGGER
-        requestRoutesSystemHostLogger(app);
-        requestRoutesSystemHostLoggerCollection(app);
-        requestRoutesSystemHostLoggerLogEntry(app);
-#endif
-
-        requestRoutesMessageRegistryFileCollection(app);
-        requestRoutesMessageRegistryFile(app);
-        requestRoutesMessageRegistry(app);
-
-        requestRoutesCertificateService(app);
-        requestRoutesHTTPSCertificate(app);
-        requestRoutesLDAPCertificate(app);
-        requestRoutesTrustStoreCertificate(app);
-
-        requestRoutesSystemPCIeFunctionCollection(app);
-        requestRoutesSystemPCIeFunction(app);
-        requestRoutesSystemPCIeDeviceCollection(app);
-        requestRoutesSystemPCIeDevice(app);
-
-        requestRoutesSensorCollection(app);
-        requestRoutesSensor(app);
-
-        requestRoutesTaskMonitor(app);
-        requestRoutesTaskService(app);
-        requestRoutesTaskCollection(app);
-        requestRoutesTask(app);
-        requestRoutesEventService(app);
-        requestRoutesEventServiceSse(app);
-        requestRoutesEventDestinationCollection(app);
-        requestRoutesEventDestination(app);
-        requestRoutesFabricAdapters(app);
-        requestRoutesFabricAdapterCollection(app);
-        requestRoutesSubmitTestEvent(app);
-
-        requestRoutesHypervisorSystems(app);
-
-        requestRoutesTelemetryService(app);
-        requestRoutesMetricReportDefinitionCollection(app);
-        requestRoutesMetricReportDefinition(app);
-        requestRoutesMetricReportCollection(app);
-        requestRoutesMetricReport(app);
-        requestRoutesTriggerCollection(app);
-        requestRoutesTrigger(app);
-
-        // Note, this must be the last route registered
-        requestRoutesRedfish(app);
-    }
+    explicit RedfishService(App& app);
 };
 
 } // namespace redfish
diff --git a/redfish-core/src/redfish.cpp b/redfish-core/src/redfish.cpp
new file mode 100644
index 0000000..58d7ddd
--- /dev/null
+++ b/redfish-core/src/redfish.cpp
@@ -0,0 +1,227 @@
+#include "redfish.hpp"
+
+#include "account_service.hpp"
+#include "aggregation_service.hpp"
+#include "app.hpp"
+#include "bios.hpp"
+#include "cable.hpp"
+#include "certificate_service.hpp"
+#include "chassis.hpp"
+#include "environment_metrics.hpp"
+#include "ethernet.hpp"
+#include "event_service.hpp"
+#include "eventservice_sse.hpp"
+#include "fabric_adapters.hpp"
+#include "fan.hpp"
+#include "hypervisor_system.hpp"
+#include "log_services.hpp"
+#include "manager_diagnostic_data.hpp"
+#include "managers.hpp"
+#include "memory.hpp"
+#include "message_registries.hpp"
+#include "metric_report.hpp"
+#include "metric_report_definition.hpp"
+#include "network_protocol.hpp"
+#include "pcie.hpp"
+#include "pcie_slots.hpp"
+#include "power.hpp"
+#include "power_subsystem.hpp"
+#include "power_supply.hpp"
+#include "processor.hpp"
+#include "redfish_sessions.hpp"
+#include "redfish_v1.hpp"
+#include "roles.hpp"
+#include "sensors.hpp"
+#include "service_root.hpp"
+#include "storage.hpp"
+#include "systems.hpp"
+#include "task.hpp"
+#include "telemetry_service.hpp"
+#include "thermal.hpp"
+#include "thermal_metrics.hpp"
+#include "thermal_subsystem.hpp"
+#include "trigger.hpp"
+#include "update_service.hpp"
+#include "virtual_media.hpp"
+
+namespace redfish
+{
+
+RedfishService::RedfishService(App& app)
+{
+    requestAccountServiceRoutes(app);
+#ifdef BMCWEB_ENABLE_REDFISH_AGGREGATION
+    requestRoutesAggregationService(app);
+    requestRoutesAggregationSourceCollection(app);
+    requestRoutesAggregationSource(app);
+#endif
+    requestRoutesRoles(app);
+    requestRoutesRoleCollection(app);
+    requestRoutesServiceRoot(app);
+    requestRoutesNetworkProtocol(app);
+    requestRoutesSession(app);
+    requestEthernetInterfacesRoutes(app);
+#ifdef BMCWEB_ALLOW_DEPRECATED_POWER_THERMAL
+    requestRoutesThermal(app);
+    requestRoutesPower(app);
+#endif
+#ifdef BMCWEB_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM
+    requestRoutesEnvironmentMetrics(app);
+    requestRoutesPowerSubsystem(app);
+    requestRoutesPowerSupply(app);
+    requestRoutesPowerSupplyCollection(app);
+    requestRoutesThermalMetrics(app);
+    requestRoutesThermalSubsystem(app);
+    requestRoutesFan(app);
+    requestRoutesFanCollection(app);
+#endif
+    requestRoutesManagerCollection(app);
+    requestRoutesManager(app);
+    requestRoutesManagerResetAction(app);
+    requestRoutesManagerResetActionInfo(app);
+    requestRoutesManagerResetToDefaultsAction(app);
+    requestRoutesManagerDiagnosticData(app);
+    requestRoutesChassisCollection(app);
+    requestRoutesChassis(app);
+    requestRoutesChassisResetAction(app);
+    requestRoutesChassisResetActionInfo(app);
+    requestRoutesChassisDrive(app);
+    requestRoutesChassisDriveName(app);
+    requestRoutesUpdateService(app);
+    requestRoutesStorageCollection(app);
+    requestRoutesStorage(app);
+    requestRoutesStorageControllerCollection(app);
+    requestRoutesStorageController(app);
+    requestRoutesDrive(app);
+    requestRoutesCable(app);
+    requestRoutesCableCollection(app);
+#ifdef BMCWEB_INSECURE_ENABLE_REDFISH_FW_TFTP_UPDATE
+    requestRoutesUpdateServiceActionsSimpleUpdate(app);
+#endif
+    requestRoutesSoftwareInventoryCollection(app);
+    requestRoutesSoftwareInventory(app);
+
+    requestRoutesSystemLogServiceCollection(app);
+    requestRoutesEventLogService(app);
+    requestRoutesPostCodesEntryAdditionalData(app);
+
+    requestRoutesPostCodesLogService(app);
+    requestRoutesPostCodesClear(app);
+    requestRoutesPostCodesEntry(app);
+    requestRoutesPostCodesEntryCollection(app);
+
+#ifdef BMCWEB_ENABLE_REDFISH_DUMP_LOG
+    requestRoutesSystemDumpService(app);
+    requestRoutesSystemDumpEntryCollection(app);
+    requestRoutesSystemDumpEntry(app);
+    requestRoutesSystemDumpCreate(app);
+    requestRoutesSystemDumpClear(app);
+
+    requestRoutesBMCDumpService(app);
+    requestRoutesBMCDumpEntryCollection(app);
+    requestRoutesBMCDumpEntry(app);
+    requestRoutesBMCDumpEntryDownload(app);
+    requestRoutesBMCDumpCreate(app);
+    requestRoutesBMCDumpClear(app);
+
+    requestRoutesFaultLogDumpService(app);
+    requestRoutesFaultLogDumpEntryCollection(app);
+    requestRoutesFaultLogDumpEntry(app);
+    requestRoutesFaultLogDumpClear(app);
+#endif
+
+#ifndef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES
+    requestRoutesJournalEventLogEntryCollection(app);
+    requestRoutesJournalEventLogEntry(app);
+    requestRoutesJournalEventLogClear(app);
+#endif
+
+    requestRoutesBMCLogServiceCollection(app);
+#ifdef BMCWEB_ENABLE_REDFISH_BMC_JOURNAL
+    requestRoutesBMCJournalLogService(app);
+    requestRoutesBMCJournalLogEntryCollection(app);
+    requestRoutesBMCJournalLogEntry(app);
+#endif
+
+#ifdef BMCWEB_ENABLE_REDFISH_CPU_LOG
+    requestRoutesCrashdumpService(app);
+    requestRoutesCrashdumpEntryCollection(app);
+    requestRoutesCrashdumpEntry(app);
+    requestRoutesCrashdumpFile(app);
+    requestRoutesCrashdumpClear(app);
+    requestRoutesCrashdumpCollect(app);
+#endif // BMCWEB_ENABLE_REDFISH_CPU_LOG
+
+    requestRoutesProcessorCollection(app);
+    requestRoutesProcessor(app);
+    requestRoutesOperatingConfigCollection(app);
+    requestRoutesOperatingConfig(app);
+    requestRoutesMemoryCollection(app);
+    requestRoutesMemory(app);
+
+    requestRoutesSystems(app);
+
+    requestRoutesBiosService(app);
+    requestRoutesBiosReset(app);
+
+#ifdef BMCWEB_ENABLE_VM_NBDPROXY
+    requestNBDVirtualMediaRoutes(app);
+#endif // BMCWEB_ENABLE_VM_NBDPROXY
+
+#ifdef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES
+    requestRoutesDBusLogServiceActionsClear(app);
+    requestRoutesDBusEventLogEntryCollection(app);
+    requestRoutesDBusEventLogEntry(app);
+    requestRoutesDBusEventLogEntryDownload(app);
+#endif
+
+#ifdef BMCWEB_ENABLE_REDFISH_HOST_LOGGER
+    requestRoutesSystemHostLogger(app);
+    requestRoutesSystemHostLoggerCollection(app);
+    requestRoutesSystemHostLoggerLogEntry(app);
+#endif
+
+    requestRoutesMessageRegistryFileCollection(app);
+    requestRoutesMessageRegistryFile(app);
+    requestRoutesMessageRegistry(app);
+
+    requestRoutesCertificateService(app);
+    requestRoutesHTTPSCertificate(app);
+    requestRoutesLDAPCertificate(app);
+    requestRoutesTrustStoreCertificate(app);
+
+    requestRoutesSystemPCIeFunctionCollection(app);
+    requestRoutesSystemPCIeFunction(app);
+    requestRoutesSystemPCIeDeviceCollection(app);
+    requestRoutesSystemPCIeDevice(app);
+
+    requestRoutesSensorCollection(app);
+    requestRoutesSensor(app);
+
+    requestRoutesTaskMonitor(app);
+    requestRoutesTaskService(app);
+    requestRoutesTaskCollection(app);
+    requestRoutesTask(app);
+    requestRoutesEventService(app);
+    requestRoutesEventServiceSse(app);
+    requestRoutesEventDestinationCollection(app);
+    requestRoutesEventDestination(app);
+    requestRoutesFabricAdapters(app);
+    requestRoutesFabricAdapterCollection(app);
+    requestRoutesSubmitTestEvent(app);
+
+    requestRoutesHypervisorSystems(app);
+
+    requestRoutesTelemetryService(app);
+    requestRoutesMetricReportDefinitionCollection(app);
+    requestRoutesMetricReportDefinition(app);
+    requestRoutesMetricReportCollection(app);
+    requestRoutesMetricReport(app);
+    requestRoutesTriggerCollection(app);
+    requestRoutesTrigger(app);
+
+    // Note, this must be the last route registered
+    requestRoutesRedfish(app);
+}
+
+} // namespace redfish
