added proper requirement and define