Implement as header only library. Use a clever name for macros.