initial port
some basic tests passing
rounding out basic tests
make sure we handle node-style callback err handling