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.
I left them in because if there is no other tests, it at least makes sure that the object gets instantiated correctly.  I'll go and remove them where we don't need them.