added functional requirements