updater implementation

+ slight writer refactor for inheritance
bonus deleter implementation
That would probably be a good change to propose, but what I was driving at here is the same logic is copied across 3 implementations.  If there is a common base type, then we can just call a single method that holds all the logic for adding the request to the bulk, checking indices, etc.