add a callback based API
Release 0.0.4