def get_overall_state(self, services):
        overall_state = 0
        if not self.monitored:
            overall_state = 5
        elif self.acknowledged:
            overall_state = 1
        elif self.downtimed:
            overall_state = 2
        elif self.state_type == 'HARD':
            if self.state == 'UNREACHABLE':
                overall_state = 3
            elif self.state == 'DOWN':
                overall_state = 4
        if overall_state <= 2:
            for service in self.services:
                if service in services:
                    service = services[service]
                    if service.overall_state_id < 5:
                        overall_state = max(overall_state, service.overall_state_id)
        return overall_state