Hook events refactor