use functional type interceptor_t for interceptor routines