Suppose we have three different strategies, this logic of holding on to the live task gets repeated right? This is why I was saying we should separate out enumeration from strategy even if it means enumerating one-or-zero tasks. Strategy should be plain immutable value, but if you insist on holding on to the state, I'd make it a case class.