better cljs component structure