My abstractions are leaking complexity all over the place. I think I'm going to have to do some refactoring.