Add a bunch of specs and fix a few bugs through those specs :)