re-worked async module, stripped down strongly but added great improvements