* The library must provide an interface for setting each of the options controlled by the documented Nmap command-line options. * The library must allow setting scan options through a command-line-like string. * The library must be portable to all systems that nmap currently supports. * It must be possible to run a scan in a nonblocking fashion and receive periodic status updates. * It must be possible to run more than one scan at a time, and to get the results of a finished scan as soon as it is finished, even if it was started after another scan that has not finished.