add hook system for extensions