use self.next() for errors