Decouple a few things, add some singletons