The intresting part here is the usage of the @Eager annotation on the assign roles property. This allows us to dynamically change the next step for the control buttons without having to implement the logic in the button itself, thus allowing it to stay stupid.