progresslistener algo improved