chore: refactor compose macro, more clojure-like syntax