A few notes:

* I'd rather see an explicit `if` than rely on the short-circuit nature of compound conditions.
* `currentView` needs all the methods that `CompositeView` has, so you could add this as a no-op function to that prototype and drop the condition entirely.
* We've been using events more than template methods, so an event would fit in better with the rest of the library.
* We already have a `leave` event. How is that different from `swapped`?