refactor update interface