Lots of stuff...

Note to self: This project has terrible commit granularity and I should work on improving that.
recover old branch work