Adding a bunch of my own abstractions.