breakout the hooks into "sub-hooks"

this will make for easier support for the current hooks and it will make it easier to add new hooks in the future