simplify the batch logic by using a scheduled executor