refactor with cancan and responders