fixed bug for iterator, but not supporting cancel
added cancel function