Major rework of the interfaces to make it easier to do feedback loops and make events easier to manage
Adding a package doc