diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 8f03e3e..64aac00 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -376,7 +376,7 @@
         {
             return;
         }
-        req = std::make_shared<crow::Request>(parser->release(), reqEc);
+        req = std::make_shared<Request>(parser->release(), reqEc);
         if (reqEc)
         {
             BMCWEB_LOG_DEBUG("Request failed to construct{}", reqEc.message());
@@ -416,8 +416,8 @@
 
         if (authenticationEnabled)
         {
-            if (!crow::authentication::isOnAllowlist(req->url().path(),
-                                                     req->method()) &&
+            if (!authentication::isOnAllowlist(req->url().path(),
+                                               req->method()) &&
                 req->session == nullptr)
             {
                 BMCWEB_LOG_WARNING("Authentication failed");
@@ -433,7 +433,7 @@
         auto asyncResp = std::make_shared<bmcweb::AsyncResp>();
         BMCWEB_LOG_DEBUG("Setting completion handler");
         asyncResp->res.setCompleteRequestHandler(
-            [self(shared_from_this())](crow::Response& thisRes) {
+            [self(shared_from_this())](Response& thisRes) {
                 self->completeRequest(thisRes);
             });
         if (doUpgrade(asyncResp))
@@ -489,7 +489,7 @@
         }
     }
 
-    void completeRequest(crow::Response& thisRes)
+    void completeRequest(Response& thisRes)
     {
         res = std::move(thisRes);
         res.keepAlive(keepAlive);
@@ -938,12 +938,12 @@
 
     boost::beast::flat_static_buffer<8192> buffer;
 
-    std::shared_ptr<crow::Request> req;
+    std::shared_ptr<Request> req;
     std::string accept;
     std::string http2settings;
     std::string acceptEncoding;
 
-    crow::Response res;
+    Response res;
 
     std::shared_ptr<persistent_data::UserSession> userSession;
     std::shared_ptr<persistent_data::UserSession> mtlsSession;
