add hook function