need -DMAIN_FUNC