Is there some way to piggy-back this construction on other internal functions, e.g.:

```erlang
new(Bucket, Key, Value, ContentType, Charset) ->
    update_value(new(Bucket, Key), Value, ContentType, Charset).
```

That would greatly reduce the number of places we have to apply guards or other constraints.