Feature/cover with tests

I added a lot of tests, but we're not at 100% coverage yet. There are some things I still need to work out, but this is a big enough fix/addition that I want to go and get this merged so future work can be done by looking and how these tests are set up.