Role chaining

@alexander-daniel  Okay we have working role switching from within roles. This should allow more flexibility making more complex behaviours.
so we can pass variable length args into the roles.