This seems like two ideas - what about something like "...provides two utility classes, SwappingRouter and CompositeView, which should be used where views are instantiated (in Router instances and in composite views), and introduce the `leave()` function. `leave()` unbinds and cleans up the view."