Added guards to transitions. Currently the guards return a boolean, refactor to return guardResults so that messages can be returned