HookExtension does not need to be an abstract