Compaliable for c++ 2001, using NULL instead of null_ptr.
do not use Upper case chars in include filenames, which will cause file not found in unix-lke systems