I'm currently in the process of rewriting the core #wlmirror code, at least the Wayland protocol parts.
Adding a new protocol to wl-mirror and wiring it up was previously 6 changes in 3 different files, 2 of those changes were multi-line boilerplate.
This is now reduced to 3 changes in 3 files, each single-line changes (adding the protocol to CMake, adding the struct member, and adding an entry in a constant global array).
The design goal is making things less coupled and harder to screw up.