generalized; improved description