added functional requirements and some non-functional requirements