Why isn't this always just self.id?