new types of hooks. [ci skip]