clean up async code
switch to fluent interface
stop using deprecated dart constructs and add more unit tests