override and final feature detection for GCC, Clang, MSVC
remove unused includes