new prepare/do interface along with internal method restructuring
fixed head test
Merge branch 'master' into new-interface
Merge pull request #37 from mrb/new-interface

Design ideas in collaboration with @quirkey