more work on abstracting api.
modjam ppl: sorry for the large commit. most of it is small api changes.