use add_exp, fix some bugs