Some template metaprogramming, because why not.