added some functional requirements