port robpike stuff to CLJS