Most complex requirements are now supported.

Unit tests included.