extract composite task and refactor MakeBatterTask