refactoring of hook application, add hooks in Model.update