Write specs for everything

## :warning: Work In Progress :warning:

This isn't ready to merge yet, but I want to go ahead and open a PR so you can ask/answer questions and see how it's progressing.