working, needs abstract and async support
update test
update readme