I wonder if it would be easier to somehow keep track of a ``Stage`` object so you can do things like ``this.stage.submit()`` or ``this.stage.cancel()``. For each stage (1, 2, ...) you could have a separate implementation that inherited from a common base.