Cleanup repo and refactor things for consistency and improved documentation. Will include breaking name and api changes.