.o is appended to (not replaced by) .cpp extension
extracted compiler class from main.cpp