added nonfunctional and other requirements