enhanced CMakeLists.txt