generalized function