alter the example to use a different name
manage setting roles in a single method
create private_attr_reader method
remove unnecessary hash
move object modification module check into Context.modify

this also creates a hook for future alternatives to cast_as and extend