A C++ Inversion of Control framework