generic main.cpp