exhaustive refactoring; bumped to 0.5.0