add function definition statement
reimplement class syntax
dissable warning CMP0037 in CMake