async option

TODO: more tests, documentation