Cannot create outcome subclasses with additional data
It's weird to use NamedTuple as a stand-in for a custom Outcome class
An outcome defined in a superclass (ie. TimedState) is the same for all subclasses (ie. MyTimedState1.TimedOut is MyTimedState2.TimedOut if both inherit from TimedState)
they're annoying to write & bad at inheritance