replaced progress func() with step func()