allow clients to override update-function