output is self.output