Small and simple C++ design pattern library