Can confirm your final solution is what I use in my projects as well (except for the :refers).l went through the same pain but in the end it works well. Thanks a lot for sharing, I think it is a big gift to the community - I think I will never forget how hard it was to come up with this .cljc pattern 
1 Like