add flexibility to global hook system