It sounds like you're asking some of the same questions that David Nolen is asking (and answering) with Om Next. If you haven't been following that process, you might find it informative. You can find some details about Om Next on the wiki
https://github.com/omcljs/om/wiki and several talks by David are available YouTube.