some cleanup; implement fail() with Task