switched implementation to be `hook()`