added abstract concept of ingredient