self.data may also be a dict