def geojson_handler(geojson, hType='map'):
    """Restructure a GeoJSON object in preparation to be added directly by add_map_data or add_data_set methods. 
    The geojson will be broken down to fit a specific Highcharts (highmaps) type, either map, mapline or mappoint. 
    Meta data in GeoJSON's properties object will be copied directly over to object['properties']
    1. geojson is the map data (GeoJSON) to be converted
    2. hType is the type of highmap types. "map" will return GeoJSON polygons and multipolygons. 
        "mapline" will return GeoJSON linestrings and multilinestrings. 
        "mappoint" will return GeoJSON points and multipoints.
        default: "map"
    """

    hType_dict = {
    'map': ['polygon', 'multipolygon'],
    'mapline': ['linestring', 'multilinestring'],
    'mappoint': ['point', 'multipoint'],    
    }


    oldlist = [x for x in geojson['features'] if x['geometry']['type'].lower() in hType_dict[hType]]
    newlist = []
    for each_dict in oldlist:
        geojson_type = each_dict['geometry']['type'].lower()

        if hType == 'mapline':
            newlist.append(
            {'name': each_dict['properties'].get('name', None), 
             'path': _coordinates_to_path(each_dict['geometry']['coordinates'], hType, geojson_type),
             'properties': each_dict['properties'],
             }
            )
        elif hType == 'map':
            newlist.append(
            {'name': each_dict['properties']['name'], 
             'path': _coordinates_to_path(each_dict['geometry']['coordinates'], hType, geojson_type),
             'properties': each_dict['properties'],
             }
            )
        elif hType == 'mappoint':
            newlist.append(
            {'name': each_dict['properties']['name'], 
             'x': each_dict['geometry']['coordinates'][0],
             'y': -each_dict['geometry']['coordinates'][1],
             'properties': each_dict['properties'],
             }
            )
        
    return newlist