made a more sensible update interface