Will be updating this as I go. Mostly only more elegant API is needed at this point. Closing #49 as all questions were answered. Fixes #49