Clang works with libstdc++.
Before, this ended up calling a virtual method in the constructor, which C++ does not allow, and I got weird crashes. This removes a lot of unused code and gets rid of unnecessary abstractions.