Finally committing a few months worth of changes. Most classes/functionality is in place and the library is ready for testing.