def build(cls, the_dict):
        """
        Builds a `pyowm.utils.geo.Geometry` subtype based on the geoJSON geometry type specified on the input dictionary
        :param the_dict: a geoJSON compliant dict
        :return: a `pyowm.utils.geo.Geometry` subtype instance
        :raises `ValueError` if unable to the geometry type cannot be recognized
        """
        assert isinstance(the_dict, dict), 'Geometry must be a dict'
        geom_type = the_dict.get('type', None)
        if geom_type == 'Point':
            return Point.from_dict(the_dict)
        elif geom_type == 'MultiPoint':
            return MultiPoint.from_dict(the_dict)
        elif geom_type == 'Polygon':
            return Polygon.from_dict(the_dict)
        elif geom_type == 'MultiPolygon':
            return MultiPolygon.from_dict(the_dict)
        else:
            raise ValueError('Unable to build a GeoType object: unrecognized geometry type')