autogen: the base supportting multiple language