Add a Result object and refactor internals to reflect that
Update docs
Update README/Changes