The components are constructed using the (make) macro, yes, and all the listener stuff that I explain is also done with macros. The selectors also use a very simple macro that makes the syntax a bit lighter (so instead of saying "and-matcher" you can just say "and"), but the mechanism is very composable, you can use your own custom functions in combination to the existing matchers.
The rest is all functions!