major refactor, smaller api
doc rewrite wip
updated docs