Much cleaner DFTask semantics