Reading through this code and `demo/coffee/layout.coffee` I think that it would be better to consistently make coffee script files AMD modules (i.e. wrap in `define()`), then would wouldn't need to use things like `_ = Bokeh._`, etc. and the code above would look like `require(["layout_main"], function(layout_main) { layout_main(); })`. This has the benefit that in future we might actually take advantage of dynamic loading capabilities of requirejs. For example, we could pack together Bokeh's files and basic dependencies, but then dynamically load big widget libraries or their components, if/when needed. I don't expect to change this now, just raise this issue for future improvements (consistently across Bokeh).