Why is this public ? all `do*()` methods are protected, if this is needed maybe we should add an `update()` method