why the `self.` here?