diff --git a/libaegisub/include/libaegisub/charset_conv.h b/libaegisub/include/libaegisub/charset_conv.h
index d96a0c8af0b4d0ab74f517757dbcaeb2bfa28853..be0fdcfa6bfb3bae63e33cd416cd46d7c641a4b5 100644
--- a/libaegisub/include/libaegisub/charset_conv.h
+++ b/libaegisub/include/libaegisub/charset_conv.h
@@ -18,7 +18,6 @@
 
 #pragma once
 
-#include <cstring>
 #include <memory>
 #include <string>
 #include <vector>
diff --git a/libaegisub/include/libaegisub/signal.h b/libaegisub/include/libaegisub/signal.h
index 93b773e1ad2b67daa744454cf57d8e79441f557b..26f4bab5d32d98c57dffea8e21b5b9e1ad7aa5cc 100644
--- a/libaegisub/include/libaegisub/signal.h
+++ b/libaegisub/include/libaegisub/signal.h
@@ -14,10 +14,11 @@
 
 #pragma once
 
-#include <boost/container/map.hpp>
-
+#include <boost/config.hpp>
+#include <map>
 #include <functional>
 #include <memory>
+#include <vector>
 
 namespace agi { namespace signal {
 class Connection;
@@ -127,7 +128,7 @@ namespace detail {
 template<typename... Args>
 class Signal final : private detail::SignalBase {
 	using Slot = std::function<void(Args...)>;
-	boost::container::map<detail::ConnectionToken*, Slot> slots; /// Signals currently connected to this slot
+	std::map<detail::ConnectionToken*, Slot> slots; /// Signals currently connected to this slot
 
 	void Disconnect(detail::ConnectionToken *tok) override {
 		slots.erase(tok);
diff --git a/libaegisub/lagi_pre.h b/libaegisub/lagi_pre.h
index 5156899babc635a86795c7e7830937e2834037cf..64834e82836ea20f18f5f20eebb7cfe585955f99 100644
--- a/libaegisub/lagi_pre.h
+++ b/libaegisub/lagi_pre.h
@@ -9,22 +9,8 @@
 #include <cerrno>
 #include <climits>
 #include <cmath>
-#include <cstdarg>
-#include <cstdio>
 #include <cstdint>
-#include <cstring>
-#include <sys/stat.h>
-#ifdef HAVE_SYS_TIME_H
-#  include <sys/time.h>
-#else
-#  include <ctime>
-#endif
-
-// Unix C
-#ifndef _WIN32
-#include <sys/statvfs.h>
-#include <sys/param.h>
-#endif
+#include <ctime>
 
 // Common C++
 #ifdef _MSC_VER
@@ -38,7 +24,6 @@
 #include <map>
 #include <memory>
 #include <numeric>
-#include <stdexcept>
 #include <string>
 #include <vector>
 
@@ -47,7 +32,9 @@
 #endif
 
 // Boost
-#include <boost/container/map.hpp>
+#include <boost/range/algorithm.hpp>
+#include <boost/range/irange.hpp>
+#include <boost/regex.hpp>
 #define BOOST_NO_SCOPED_ENUMS
 #include <boost/filesystem.hpp>
 #undef BOOST_NO_SCOPED_ENUMS
diff --git a/libaegisub/unix/util.cpp b/libaegisub/unix/util.cpp
index f5b1a6492eefc24c4032b0a3975cdbaa30d18e06..6fbc010a0a3bf42ce4fed6f9804f50d0baec55b5 100644
--- a/libaegisub/unix/util.cpp
+++ b/libaegisub/unix/util.cpp
@@ -12,6 +12,8 @@
 // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
+#include <libaegisub/util.h>
+
 #include <cstddef>
 
 #ifdef _LIBCPP_VERSION