implemented batch