reduce mutable state

This PR is a slight refactor that reduces the use of ivars, preferring methods instead. This made it substantially easier to debug the gem itself in the context of my application (since these methods would be hit in-line during execution, rather than at initialization).

What do you think?
:-1: really don't love this approach. Makes reading the code harder. Would much rather see three separate methods.