A lot of crazy abstractions. This is getting complex.