Adds the top level interface.
Updates the tests and migrates everything to using simulate directly.
Cleans up imports, adds an example and updates README.