generalized model