Every medium defines its own editing experience, which is not dissimilar to what you have in master with the editAction method.  The three views that the medium can define include the sidebar (where the table of contents resides), the main content area (where the search results reside), and the toolbar (part of the menu where the search bar resides).  This is accomplished by defining the method for one of these areas and passing its desired view to the layout (which actually handles loading it).

Lazy-loading the views prevents them from being loaded unless they are needed and avoids potential circular dependencies, since we don't know what those views may depend on.

As I had mentioned previously, this makes it easy to create self-contained "plugins" for new mediums, which also seemed to be your intent.