diff --git a/include/webassets.hpp b/include/webassets.hpp
index 7cf6c93..9944dfd 100644
--- a/include/webassets.hpp
+++ b/include/webassets.hpp
@@ -29,7 +29,7 @@
 
 inline void requestRoutes(App& app)
 {
-    const static boost::container::flat_map<const char*, const char*, CmpStr>
+    constexpr static std::array<std::pair<const char*, const char*>, 17>
         contentTypes{
             {{".css", "text/css;charset=UTF-8"},
              {".html", "text/html;charset=UTF-8"},
@@ -115,17 +115,24 @@
             }
             const char* contentType = nullptr;
 
-            auto contentTypeIt = contentTypes.find(extension.c_str());
-            if (contentTypeIt == contentTypes.end())
+            for (const std::pair<const char*, const char*>& ext : contentTypes)
+            {
+                if (ext.first == nullptr || ext.second == nullptr)
+                {
+                    continue;
+                }
+                if (extension == ext.first)
+                {
+                    contentType = ext.second;
+                }
+            }
+
+            if (contentType == nullptr)
             {
                 BMCWEB_LOG_ERROR << "Cannot determine content-type for "
                                  << absolutePath << " with extension "
                                  << extension;
             }
-            else
-            {
-                contentType = contentTypeIt->second;
-            }
 
             app.routeDynamic(webpath)(
                 [absolutePath, contentType,
