functional requiremnts