refactoring: new update method