def add(self, new_hw_map):
        """
            Add the HW map only if it doesn't exist for a given key, and no address collisions
        """
        new_route = new_hw_map.route
        if new_route in self.raw_maps:
            raise KeyError("HW Map already exists: {0:s}".format(new_hw_map.route))

        common_addresses = set(self).intersection(new_hw_map)
        if common_addresses:
            raise ValueError("An address in {0:s} already exists in the manager".format(new_route))
        # all ok, add it all
        self.raw_maps[new_route] = new_hw_map
        self.update(new_hw_map)
Add the HW map only if it doesn't exist for a given key, and no address collisions