Refactors delayed-choice monad into its own interface trait.