One challenge is a few of these use `self.data` but the one I just wrote doesn't.