UpdateOperation and UpdateProtocol should handle both update and replace. This will allow a high level API to batch up mixtures of updates and replaces.