working model with three user roles can update