I've often run into the problem of needing to switch between different data transport mechanisms (UART/SPI/UDP/TCP/1553/Spacewire/etc.) when working on embedded software projects, sometimes even at runtime. Each type of communication library will have its own way of handling thread safety, or simply neglect it, causing me to have to reinvent dispatching and thread safety protection mechanisms for each new interface, highly coupling thread safety management with that interface's particular needs. This tool lets you accomplish interface wrapping a bit more easily, by handling the bulk of the thread safety considerations for you. And encourages you to make interfaces look and behave similarly, so that swapping between them become a trivial endeavor, rather than a case-by-case architecture refactoring effort.