refactored out async.
re #112 This is a little bit better