added different subclasses of ResultIterator for different result types