use hook system