A favorite software technique I use: dynamically loading libraries and using function pointers to access the loaded library. Works in just about any contact in C/C++ and I have used it to make projects simpler to manage, and faster to compile. It's also very useful for building plugins.