divide cpu consume task into small one so it won't block the UI and can abort anytime