add batch learning