update to protocol or nil