convert poll and ppoll to new iterator structure, simplify, more useful return type