Rough, untested refactoring of blip - going to call this 0.1