use more sensible abstract method for on completion of FutureTasks
simplify + comment