fully functional :)
use promises
add tests
add tests
all tests passing
docs