self.software() expects overrides hash arg