major refactor and interface changes
dogfood
adding more tests