diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5cb1a04..b58413e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,152 +1,184 @@
-cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
+cmake_minimum_required (VERSION 3.5 FATAL_ERROR)
 
-cmake_policy(SET CMP0054 NEW)
+cmake_policy (SET CMP0054 NEW)
 
-set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
+set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
 
-option(BUILD_STATIC_LIBS "Built static libraries" ON)
-option(YOCTO_DEPENDENCIES "Use YOCTO depedencies system" OFF)
+option (BUILD_STATIC_LIBS "Built static libraries" ON)
+option (YOCTO_DEPENDENCIES "Use YOCTO depedencies system" OFF)
 
-project(bmc-webserver CXX)
+option (BMCWEB_ENABLE_KVM "Enable KVM websocket interfaces" ON)
+option (BMCWEB_ENABLE_DBUS_REST "Enable rest dbus interfaces" ON)
+option (BMCWEB_ENABLE_REDFISH "Enable redfish interfaces" ON)
+option (BMCWEB_ENABLE_PHOSPHOR_WEBUI
+        "Enable webui interfaces; Requires
+       DBUS_REST interfaces" ON)
 
-include(CTest)
+# Insecure options.  Every option that starts with a BMCWEB_INSECURE flag should
+# not be enabled by default for any platform, unless the author fully
+# comprehends the implications of doing so.  In general, enabling these options
+# will cause security problems of varying degrees
+option (
+    BMCWEB_INSECURE_DISABLE_CSRF_PREVENTION
+    "Disable CSRF prevention checks.
+       Should be set to OFF for production systems."
+    OFF
+)
 
-set(CMAKE_CXX_STANDARD 14)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+option (BMCWEB_INSECURE_DISABLE_SSL
+        "Disable SSL ports. Should be set to OFF for
+       production systems."
+        OFF)
 
-set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+option (
+    BMCWEB_INSECURE_DISABLE_AUTHENTICATION
+    "Disable authentication on all
+       ports. Should be set to OFF for production systems"
+    OFF
+)
 
-SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -Wall")
+option (BMCWEB_INSECURE_DISABLE_XSS_PREVENTION "Disable XSS preventions" OFF)
 
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
+project (bmc-webserver CXX)
+
+include (CTest)
+
+set (CMAKE_CXX_STANDARD 14)
+set (CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
+set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -Wall")
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
+set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
 
 # general
-option(BMCWEB_BUILD_UT "Enable Unit test" ON)
+option (BMCWEB_BUILD_UT "Enable Unit test" ON)
 
 # security flags
-SET(
-  SECURITY_FLAGS
-  "\
+set (
+    SECURITY_FLAGS
+    "\
     -fstack-protector-strong \
     -fPIE \
     -fPIC \
     -D_FORTIFY_SOURCE=2 \
     -Wformat \
     -Wformat-security"
-  )
-SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SECURITY_FLAGS}")
-SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO
-    "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SECURITY_FLAGS}")
-SET(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} ${SECURITY_FLAGS}")
+)
+set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SECURITY_FLAGS}")
+set (CMAKE_CXX_FLAGS_RELWITHDEBINFO
+     "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SECURITY_FLAGS}")
+set (CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} ${SECURITY_FLAGS}")
 
 # Enable link time optimization This is a temporary workaround because
 # INTERPROCEDURAL_OPTIMIZATION isn't available until cmake 3.9. gcc-ar and gcc-
 # ranlib are wrappers around ar and ranlib which add the lto plugin to the
 # command line.
-if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-  if(NOT CMAKE_BUILD_TYPE MATCHES Debug)
-    STRING(REGEX REPLACE "ar$" "gcc-ar" CMAKE_AR ${CMAKE_AR})
-    STRING(REGEX REPLACE "ranlib$" "gcc-ranlib" CMAKE_RANLIB ${CMAKE_RANLIB})
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -fno-fat-lto-objects")
+if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+    if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
+        string (REGEX REPLACE "ar$" "gcc-ar" CMAKE_AR ${CMAKE_AR})
+        string (REGEX
+                REPLACE "ranlib$" "gcc-ranlib" CMAKE_RANLIB ${CMAKE_RANLIB})
+        set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -fno-fat-lto-objects")
 
-    # Reduce the binary size by removing unnecessary dynamic symbol table
-    # entries
-    SET(
-      CMAKE_CXX_FLAGS
-      "${CMAKE_CXX_FLAGS} \
+        # Reduce the binary size by removing unnecessary dynamic symbol table
+        # entries
+        set (
+            CMAKE_CXX_FLAGS
+            "${CMAKE_CXX_FLAGS} \
         -fvisibility=hidden \
         -fvisibility-inlines-hidden \
         -Wl,--exclude-libs,ALL"
-      )
-  endif(NOT CMAKE_BUILD_TYPE MATCHES Debug)
-endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+        )
+    endif (NOT CMAKE_BUILD_TYPE MATCHES Debug)
+endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
 
-if(NOT ${YOCTO_DEPENDENCIES}) # Download and unpack googletest at configure time
-  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt.in
-                 3rdparty/CMakeLists.txt)
-  execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
-                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
-  execute_process(COMMAND ${CMAKE_COMMAND} --build .
-                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
+if (NOT ${YOCTO_DEPENDENCIES}) # Download and unpack googletest at configure
+                               # time
+    configure_file (CMakeLists.txt.in 3rdparty/CMakeLists.txt)
+    execute_process (COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
+                     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
+    execute_process (COMMAND ${CMAKE_COMMAND} --build .
+                     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
 
-  set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/prefix ${CMAKE_PREFIX_PATH})
-endif()
+    set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/prefix ${CMAKE_PREFIX_PATH})
+endif ()
 
 # add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
-add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
-add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
-add_definitions(-DBOOST_ALL_NO_LIB)
-add_definitions(-DBOOST_NO_RTTI)
-add_definitions(-DBOOST_NO_TYPEID)
+add_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY)
+add_definitions (-DBOOST_SYSTEM_NO_DEPRECATED)
+add_definitions (-DBOOST_ALL_NO_LIB)
+add_definitions (-DBOOST_NO_RTTI)
+add_definitions (-DBOOST_NO_TYPEID)
 
-find_package(Boost 1.66 REQUIRED)
-include_directories(${BOOST_SRC_DIR})
+find_package (Boost 1.66 REQUIRED)
+include_directories (${BOOST_SRC_DIR})
 
 # sdbusplus
-if(NOT ${YOCTO_DEPENDENCIES})
-  include_directories(${CMAKE_BINARY_DIR}/sdbusplus-src
-                     ${CMAKE_BINARY_DIR}/prefix/include)
-  set(WANT_TRANSACTION 0)
+if (NOT ${YOCTO_DEPENDENCIES})
+    include_directories (${CMAKE_BINARY_DIR}/sdbusplus-src
+                         ${CMAKE_BINARY_DIR}/prefix/include)
 
-  configure_file(${CMAKE_BINARY_DIR}/sdbusplus-src/sdbusplus/server.hpp.in
-                ${CMAKE_BINARY_DIR}/prefix/include/sdbusplus/server.hpp @ONLY)
-  configure_file(${CMAKE_BINARY_DIR}/sdbusplus-src/sdbusplus/bus.hpp.in
-                ${CMAKE_BINARY_DIR}/prefix/include/sdbusplus/bus.hpp @ONLY)
-endif()
+    set (WANT_TRANSACTION 0)
+
+    configure_file (${CMAKE_BINARY_DIR}/sdbusplus-src/sdbusplus/server.hpp.in
+                    ${CMAKE_BINARY_DIR}/prefix/include/sdbusplus/server.hpp
+                    @ONLY)
+    configure_file (${CMAKE_BINARY_DIR}/sdbusplus-src/sdbusplus/bus.hpp.in
+                    ${CMAKE_BINARY_DIR}/prefix/include/sdbusplus/bus.hpp @ONLY)
+endif ()
 
 # Openssl
-find_package(OpenSSL REQUIRED)
-include_directories(${OPENSSL_INCLUDE_DIR})
-message("OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR}")
+find_package (OpenSSL REQUIRED)
+include_directories (${OPENSSL_INCLUDE_DIR})
+message ("OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR}")
 
 # Crow
-message("CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
-if(CMAKE_BUILD_TYPE MATCHES Debug)
-  message("Logging disabled")
-  add_definitions(-DCROW_ENABLE_LOGGING)
-  add_definitions(-DCROW_ENABLE_DEBUG)
-endif(CMAKE_BUILD_TYPE MATCHES Debug)
-
-#add_definitions(-DCROW_ENABLE_LOGGING)
-#add_definitions(-DCROW_ENABLE_DEBUG)
+message ("CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
+if (CMAKE_BUILD_TYPE MATCHES Debug)
+    message ("Logging disabled")
+    add_definitions (-DCROW_ENABLE_LOGGING)
+    add_definitions (-DCROW_ENABLE_DEBUG)
+endif (CMAKE_BUILD_TYPE MATCHES Debug)
 
 add_definitions(-DCROW_ENABLE_SSL)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/crow/include)
 
 # Zlib
-find_package(ZLIB REQUIRED)
-include_directories(${ZLIB_INCLUDE_DIRS})
+find_package (ZLIB REQUIRED)
+include_directories (${ZLIB_INCLUDE_DIRS})
 
 # PAM
-option(WEBSERVER_ENABLE_PAM "enable pam authentication" ON)
-if("${WEBSERVER_ENABLE_PAM}")
-  find_package(PAM REQUIRED)
-else()
-  add_definitions("-DWEBSERVER_DISABLE_PAM")
-endif()
+option (WEBSERVER_ENABLE_PAM "enable pam authentication" ON)
+if ("${WEBSERVER_ENABLE_PAM}")
+    find_package (PAM REQUIRED)
+else ()
+    add_definitions ("-DWEBSERVER_DISABLE_PAM")
+endif ()
 
-add_definitions("-Wno-attributes")
+add_definitions ("-Wno-attributes")
 
 # tinyxml2
-find_package(tinyxml2 REQUIRED)
+find_package (tinyxml2 REQUIRED)
 
-set(WEBSERVER_MAIN src/webserver_main.cpp)
+set (WEBSERVER_MAIN src/webserver_main.cpp)
 
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/redfish-core/include)
+include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
+include_directories (${CMAKE_CURRENT_SOURCE_DIR}/redfish-core/include)
 
-set(SRC_FILES
-    redfish-core/src/error_messages.cpp
-    redfish-core/src/utils/json_utils.cpp
-    ${GENERATED_SRC_FILES}
-)
+file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include/bmcweb)
+configure_file (settings.hpp.in ${CMAKE_BINARY_DIR}/include/bmcweb/settings.hpp)
+include_directories (${CMAKE_BINARY_DIR}/include)
 
-file(COPY src/test_resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+set (SRC_FILES redfish-core/src/error_messages.cpp
+     redfish-core/src/utils/json_utils.cpp ${GENERATED_SRC_FILES})
 
-file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/generated)
+file (COPY src/test_resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
 
 # Unit Tests
+<<<<<<< HEAD
 if(${BMCWEB_BUILD_UT})
   set(UT_FILES
       src/crow_test.cpp
@@ -205,17 +237,71 @@
 
 add_executable(getvideo src/getvideo_main.cpp)
 target_link_libraries(getvideo pthread)
+=======
+if (${BMCWEB_BUILD_UT})
+    set (UT_FILES src/crow_test.cpp src/gtest_main.cpp
+         src/token_authorization_middleware_test.cpp
+         src/security_headers_middleware_test.cpp src/webassets_test.cpp
+         src/crow_getroutes_test.cpp src/ast_jpeg_decoder_test.cpp
+         src/kvm_websocket_test.cpp src/msan_test.cpp
+         src/ast_video_puller_test.cpp
+         ${CMAKE_BINARY_DIR}/include/bmcweb/blns.hpp) # big list of naughty
+                                                      # strings
+    add_custom_command (OUTPUT ${CMAKE_BINARY_DIR}/include/bmcweb/blns.hpp
+                        COMMAND
+                            xxd -i
+                            ${CMAKE_CURRENT_SOURCE_DIR}/src/test_resources/blns
+                            ${CMAKE_BINARY_DIR}/include/bmcweb/blns.hpp)
+
+    set_source_files_properties (${CMAKE_BINARY_DIR}/include/bmcweb/blns.hpp
+                                 PROPERTIES GENERATED TRUE)
+
+    enable_testing ()
+
+    add_executable (webtest ${SRC_FILES} ${UT_FILES})
+
+    find_package (GTest REQUIRED)
+    find_package (GMock REQUIRED)
+    target_link_libraries (webtest ${GTEST_LIBRARIES})
+    target_link_libraries (webtest ${GMOCK_LIBRARIES})
+
+    target_link_libraries (webtest pthread)
+    target_link_libraries (webtest ${OPENSSL_LIBRARIES})
+    target_link_libraries (webtest ${ZLIB_LIBRARIES})
+    target_link_libraries (webtest pam)
+    target_link_libraries (webtest tinyxml2)
+    target_link_libraries (webtest -lstdc++fs)
+    add_test (webtest webtest "--gtest_output=xml:webtest.xml")
+
+endif (${BMCWEB_BUILD_UT})
+
+install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/static/ DESTINATION share/www)
+
+# bmcweb
+add_executable (bmcweb ${WEBSERVER_MAIN} ${HDR_FILES} ${SRC_FILES})
+target_link_libraries (bmcweb pthread)
+target_link_libraries (bmcweb ${OPENSSL_LIBRARIES})
+target_link_libraries (bmcweb ${ZLIB_LIBRARIES})
+target_link_libraries (bmcweb pam)
+target_link_libraries (bmcweb -lsystemd)
+target_link_libraries (bmcweb -lstdc++fs)
+target_link_libraries (bmcweb tinyxml2)
+install (TARGETS bmcweb DESTINATION bin)
+
+add_executable (getvideo src/getvideo_main.cpp)
+target_link_libraries (getvideo pthread)
+>>>>>>> a7b5f2d... Implement feature selection in bmcweb
 
 # Visual Studio Code helper this needs to be at the end to make sure all
 # includes are handled correctly
-include(CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs)
-get_property(C_INCLUDE_DIRS
-             DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-             PROPERTY INCLUDE_DIRECTORIES)
+include (CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs)
+get_property (C_INCLUDE_DIRS
+              DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+              PROPERTY INCLUDE_DIRECTORIES)
 
-execute_process(COMMAND
-                  python3
-                  ${CMAKE_CURRENT_SOURCE_DIR}/scripts/prime_vscode_compile_db.py
-                  ${C_INCLUDE_DIRS}
-                  ${CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS}
-                  ${CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS})
+execute_process (
+    COMMAND python3
+            ${CMAKE_CURRENT_SOURCE_DIR}/scripts/prime_vscode_compile_db.py
+            ${C_INCLUDE_DIRS} ${CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS}
+            ${CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS}
+)
diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in
index 7025398..3ab0aac 100644
--- a/CMakeLists.txt.in
+++ b/CMakeLists.txt.in
@@ -47,15 +47,3 @@
     BUILD_COMMAND ""
     INSTALL_COMMAND mkdir -p "${CMAKE_BINARY_DIR}/prefix/include/" && cp -R ${CMAKE_BINARY_DIR}/boost-src/boost ${CMAKE_BINARY_DIR}/prefix/include
 )
-
-ExternalProject_Add(
-    gtest
-    GIT_REPOSITORY
-    "https://github.com/google/googletest.git"
-    GIT_TAG
-    dfa853b63d17c787914b663b50c2095a0c5b706e
-    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/googletest-build
-    SOURCE_DIR        "${CMAKE_BINARY_DIR}/googletest-src"
-    BINARY_DIR        "${CMAKE_BINARY_DIR}/googletest-build"
-    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/prefix
-)
diff --git a/cmake-format.json b/cmake-format.json
new file mode 100644
index 0000000..4a701ae
--- /dev/null
+++ b/cmake-format.json
@@ -0,0 +1,12 @@
+{
+  "enum_char": ".",
+  "line_ending": "unix",
+  "bullet_char": "*",
+  "max_subargs_per_line": 99,
+  "command_case": "lower",
+  "tab_size": 4,
+  "line_width": 80,
+  "separate_fn_name_with_space": true,
+  "dangle_parens": true,
+  "separate_ctrl_name_with_space": true
+}
diff --git a/crow/include/crow.h b/crow/include/crow.h
index 28d46b6..edc0d7f 100644
--- a/crow/include/crow.h
+++ b/crow/include/crow.h
@@ -1,17 +1,16 @@
 #pragma once
-#include "crow/query_string.h"
-#include "crow/settings.h"
-#include "crow/socket_adaptors.h"
+#include "crow/app.h"
+#include "crow/common.h"
+#include "crow/http_connection.h"
+#include "crow/http_request.h"
+#include "crow/http_response.h"
+#include "crow/http_server.h"
 #include "crow/logging.h"
+#include "crow/middleware_context.h"
+#include "crow/query_string.h"
+#include "crow/routing.h"
+#include "crow/socket_adaptors.h"
 #include "crow/timer_queue.h"
 #include "crow/utility.h"
-#include "crow/common.h"
-#include "crow/http_request.h"
 #include "crow/websocket.h"
-#include "crow/http_response.h"
-#include "crow/routing.h"
-#include "crow/middleware_context.h"
-#include "crow/http_connection.h"
-#include "crow/http_server.h"
-#include "crow/app.h"
 #include "boost/beast/core.hpp"
diff --git a/crow/include/crow/app.h b/crow/include/crow/app.h
index bb5a33b..9abf6bb 100644
--- a/crow/include/crow/app.h
+++ b/crow/include/crow/app.h
@@ -13,7 +13,6 @@
 #include "crow/logging.h"
 #include "crow/middleware_context.h"
 #include "crow/routing.h"
-#include "crow/settings.h"
 #include "crow/utility.h"
 
 #define CROW_ROUTE(app, url) \
diff --git a/crow/include/crow/http_connection.h b/crow/include/crow/http_connection.h
index e34b758..43437ef 100644
--- a/crow/include/crow/http_connection.h
+++ b/crow/include/crow/http_connection.h
@@ -8,7 +8,6 @@
 #include "crow/http_response.h"
 #include "crow/logging.h"
 #include "crow/middleware_context.h"
-#include "crow/settings.h"
 #include "crow/socket_adaptors.h"
 #include "crow/timer_queue.h"
 #include <boost/algorithm/string.hpp>
diff --git a/crow/include/crow/logging.h b/crow/include/crow/logging.h
index fb3aba0..390f80f 100644
--- a/crow/include/crow/logging.h
+++ b/crow/include/crow/logging.h
@@ -1,141 +1,123 @@
 #pragma once
 
-#include <string>
 #include <cstdio>
 #include <cstdlib>
 #include <ctime>
 #include <iostream>
 #include <sstream>
+#include <string>
 
-#include "crow/settings.h"
-
-namespace crow
-{
-    enum class LogLevel
-    {
+namespace crow {
+enum class LogLevel {
 #ifndef ERROR
-        DEBUG = 0,
-        INFO,
-        WARNING,
-        ERROR,
-        CRITICAL,
+  DEBUG = 0,
+  INFO,
+  WARNING,
+  ERROR,
+  CRITICAL,
 #endif
 
-        Debug = 0,
-        Info,
-        Warning,
-        Error,
-        Critical,
-    };
+  Debug = 0,
+  Info,
+  Warning,
+  Error,
+  Critical,
+};
 
-    class ILogHandler {
-        public:
-            virtual void log(std::string message, LogLevel level) = 0;
-    };
+class ILogHandler {
+ public:
+  virtual void log(std::string message, LogLevel level) = 0;
+};
 
-    class CerrLogHandler : public ILogHandler {
-        public:
-            void log(std::string message, LogLevel /*level*/) override {
-                std::cerr << message;
-            }
-    };
+class CerrLogHandler : public ILogHandler {
+ public:
+  void log(std::string message, LogLevel /*level*/) override {
+    std::cerr << message;
+  }
+};
 
-    class logger {
+class logger {
+ private:
+  //
+  static std::string timestamp() {
+    char date[32];
+    time_t t = time(0);
 
-        private:
-            //
-            static std::string timestamp()
-            {
-                char date[32];
-                time_t t = time(0);
-
-                tm my_tm{};
+    tm my_tm{};
 
 #ifdef _MSC_VER
-                gmtime_s(&my_tm, &t);
+    gmtime_s(&my_tm, &t);
 #else
-                gmtime_r(&t, &my_tm);
+    gmtime_r(&t, &my_tm);
 #endif
 
-                size_t sz = strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", &my_tm);
-                return std::string(date, date+sz);
-            }
+    size_t sz = strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", &my_tm);
+    return std::string(date, date + sz);
+  }
 
-        public:
+ public:
+  logger(const std::string& prefix, LogLevel level) : level_(level) {
+#ifdef CROW_ENABLE_LOGGING
+    stringstream_ << "(" << timestamp() << ") [" << prefix << "] ";
+#endif
+  }
+  ~logger() {
+#ifdef CROW_ENABLE_LOGGING
+    if (level_ >= get_current_log_level()) {
+      stringstream_ << std::endl;
+      get_handler_ref()->log(stringstream_.str(), level_);
+    }
+#endif
+  }
 
+  //
+  template <typename T>
+  logger& operator<<(T const& value) {
+#ifdef CROW_ENABLE_LOGGING
+    if (level_ >= get_current_log_level()) {
+      stringstream_ << value;
+    }
+#endif
+    return *this;
+  }
 
-            logger(const std::string& prefix, LogLevel level) : level_(level) {
-    #ifdef CROW_ENABLE_LOGGING
-                    stringstream_ << "(" << timestamp() << ") [" << prefix << "] ";
-    #endif
+  //
+  static void setLogLevel(LogLevel level) { get_log_level_ref() = level; }
 
-            }
-            ~logger() {
-    #ifdef CROW_ENABLE_LOGGING
-                if(level_ >= get_current_log_level()) {
-                    stringstream_ << std::endl;
-                    get_handler_ref()->log(stringstream_.str(), level_);
-                }
-    #endif
-            }
+  static void setHandler(ILogHandler* handler) { get_handler_ref() = handler; }
 
-            //
-            template <typename T>
-            logger& operator<<(T const &value) {
+  static LogLevel get_current_log_level() { return get_log_level_ref(); }
 
-    #ifdef CROW_ENABLE_LOGGING
-                if(level_ >= get_current_log_level()) {
-                    stringstream_ << value;
-                }
-    #endif
-                return *this;
-            }
+ private:
+  //
+  static LogLevel& get_log_level_ref() {
+    static auto current_level = static_cast<LogLevel>(1);
+    return current_level;
+  }
+  static ILogHandler*& get_handler_ref() {
+    static CerrLogHandler default_handler;
+    static ILogHandler* current_handler = &default_handler;
+    return current_handler;
+  }
 
-            //
-            static void setLogLevel(LogLevel level) {
-                get_log_level_ref() = level;
-            }
-
-            static void setHandler(ILogHandler* handler) {
-                get_handler_ref() = handler;
-            }
-
-            static LogLevel get_current_log_level() {
-                return get_log_level_ref();
-            }
-
-        private:
-            //
-            static LogLevel& get_log_level_ref()
-            {
-                static auto current_level = static_cast<LogLevel>(CROW_LOG_LEVEL);
-                return current_level;
-            }
-            static ILogHandler*& get_handler_ref()
-            {
-                static CerrLogHandler default_handler;
-                static ILogHandler* current_handler = &default_handler;
-                return current_handler;
-            }
-
-            //
-            std::ostringstream stringstream_;
-            LogLevel level_;
-    };
+  //
+  std::ostringstream stringstream_;
+  LogLevel level_;
+};
 }  // namespace crow
 
-#define CROW_LOG_CRITICAL   \
-        if (crow::logger::get_current_log_level() <= crow::LogLevel::Critical) \
-            crow::logger("CRITICAL", crow::LogLevel::Critical)
-#define CROW_LOG_ERROR      \
-        if (crow::logger::get_current_log_level() <= crow::LogLevel::Error) \
-            crow::logger("ERROR   ", crow::LogLevel::Error)
-#define CROW_LOG_WARNING    \
-        if (crow::logger::get_current_log_level() <= crow::LogLevel::Warning) \
-            crow::logger("WARNING ", crow::LogLevel::Warning)
-#define CROW_LOG_INFO       \
-        if (crow::logger::get_current_log_level() <= crow::LogLevel::Info) \
-            crow::logger("INFO    ", crow::LogLevel::Info)
-#define CROW_LOG_DEBUG      \
-        if (crow::logger::get_current_log_level() <= crow::LogLevel::Debug) \
-            crow::logger("DEBUG   ", crow::LogLevel::Debug)
+#define CROW_LOG_CRITICAL                                                \
+  if (crow::logger::get_current_log_level() <= crow::LogLevel::Critical) \
+  crow::logger("CRITICAL", crow::LogLevel::Critical)
+#define CROW_LOG_ERROR                                                \
+  if (crow::logger::get_current_log_level() <= crow::LogLevel::Error) \
+  crow::logger("ERROR   ", crow::LogLevel::Error)
+#define CROW_LOG_WARNING                                                \
+  if (crow::logger::get_current_log_level() <= crow::LogLevel::Warning) \
+  crow::logger("WARNING ", crow::LogLevel::Warning)
+#define CROW_LOG_INFO                                                \
+  if (crow::logger::get_current_log_level() <= crow::LogLevel::Info) \
+  crow::logger("INFO    ", crow::LogLevel::Info)
+#define CROW_LOG_DEBUG                                                \
+  if (crow::logger::get_current_log_level() <= crow::LogLevel::Debug) \
+  crow::logger("DEBUG   ", crow::LogLevel::Debug)
diff --git a/crow/include/crow/socket_adaptors.h b/crow/include/crow/socket_adaptors.h
index a057240..e3d0081 100644
--- a/crow/include/crow/socket_adaptors.h
+++ b/crow/include/crow/socket_adaptors.h
@@ -1,6 +1,6 @@
 #pragma once
 #include "crow/logging.h"
-#include "crow/settings.h"
+
 #include <boost/asio.hpp>
 #include <boost/lexical_cast.hpp>
 
diff --git a/crow/include/crow/utility.h b/crow/include/crow/utility.h
index 7cae52e..98b6534 100644
--- a/crow/include/crow/utility.h
+++ b/crow/include/crow/utility.h
@@ -6,10 +6,8 @@
 #include <stdexcept>
 #include <string>
 #include <tuple>
-#include <boost/utility/string_view.hpp>
 #include "nlohmann/json.hpp"
-
-#include "crow/settings.h"
+#include <boost/utility/string_view.hpp>
 
 namespace crow {
 namespace black_magic {
@@ -519,8 +517,7 @@
 
 // TODO this is temporary and should be deleted once base64 is refactored out of
 // crow
-inline bool base64_decode(const boost::string_view input,
-                          std::string& output) {
+inline bool base64_decode(const boost::string_view input, std::string& output) {
   static const char nop = -1;
   // See note on encoding_data[] in above function
   static const char decoding_data[] = {
diff --git a/include/token_authorization_middleware.hpp b/include/token_authorization_middleware.hpp
index 0c0c474..a40469f 100644
--- a/include/token_authorization_middleware.hpp
+++ b/include/token_authorization_middleware.hpp
@@ -165,7 +165,7 @@
     if (session == nullptr) {
       return nullptr;
     }
-
+#ifndef BMCWEB_INSECURE_DISABLE_CSRF_PREVENTION
     // RFC7231 defines methods that need csrf protection
     if (req.method() != "GET"_method) {
       boost::string_view csrf = req.get_header_value("X-XSRF-TOKEN");
@@ -178,6 +178,7 @@
         return nullptr;
       }
     }
+#endif
     return session;
   }
 
diff --git a/settings.hpp.in b/settings.hpp.in
new file mode 100644
index 0000000..0e059f8
--- /dev/null
+++ b/settings.hpp.in
@@ -0,0 +1,9 @@
+#pragma once
+
+#cmakedefine BMCWEB_ENABLE_KVM
+#cmakedefine BMCWEB_ENABLE_DBUS_REST
+#cmakedefine BMCWEB_ENABLE_REDFISH
+#cmakedefine BMCWEB_ENABLE_PHOSPHOR_WEBUI
+#cmakedefine BMCWEB_INSECURE_DISABLE_CSRF_PREVENTION
+#cmakedefine BMCWEB_INSECURE_DISABLE_SSL
+#cmakedefine BMCWEB_INSECURE_DISABLE_XSS_PREVENTION
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index 93b3aa6..6454ed3 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -1,9 +1,11 @@
 #include <systemd/sd-daemon.h>
+#include <bmcweb/settings.hpp>
 #include <dbus_monitor.hpp>
 #include <dbus_singleton.hpp>
 #include <image_upload.hpp>
 #include <openbmc_dbus_rest.hpp>
 #include <persistent_data_middleware.hpp>
+#include <redfish.hpp>
 #include <redfish_v1.hpp>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/bus.hpp>
@@ -13,10 +15,9 @@
 #include <token_authorization_middleware.hpp>
 #include <web_kvm.hpp>
 #include <webassets.hpp>
+#include <webserver_common.hpp>
 #include <memory>
 #include <string>
-#include "redfish.hpp"
-#include "webserver_common.hpp"
 #include <crow/app.h>
 #include <boost/asio.hpp>
 
@@ -61,14 +62,26 @@
 #endif
   // Static assets need to be initialized before Authorization, because auth
   // needs to build the whitelist from the static routes
-  crow::webassets::request_routes(app);
-  crow::TokenAuthorization::request_routes(app);
 
+#ifdef BMCWEB_ENABLE_PHOSPHOR_WEBUI
+  crow::webassets::request_routes(app);
+#endif
+
+#ifdef BMCWEB_ENABLE_KVM
   crow::kvm::request_routes(app);
+#endif
+
+#ifdef BMCWEB_ENABLE_REDFISH
   crow::redfish::request_routes(app);
+#endif
+
+#ifdef BMCWEB_ENABLE_DBUS_REST
   crow::dbus_monitor::request_routes(app);
   crow::image_upload::requestRoutes(app);
   crow::openbmc_mapper::request_routes(app);
+#endif
+
+  crow::TokenAuthorization::request_routes(app);
 
   CROW_LOG_INFO << "bmcweb (" << __DATE__ << ": " << __TIME__ << ')';
   setup_socket(app);
