batch implemented