def METHOD_NAME(input_data, output_projection, shape_out=None, hdu_in=0,
                              order='bilinear', blocks=(1000, 1000), parallel=False):
    """
    For a 2D image, reproject in chunks
    """
    array_in, wcs_in = parse_input_data(input_data, hdu_in=hdu_in)
    wcs_out, shape_out = parse_output_projection(output_projection, shape_out=shape_out)
    if isinstance(order, six.string_types):
        order = ORDER[order]
    # find corners
    xs=[]
    ys=[]
    ymax,xmax=input_data.data.shape
    for x,y in ((0,0),(xmax,0),(xmax,ymax),(0,ymax)):
        sky=wcs_in.wcs_pix2world(x,y,0)
        xt,yt=wcs_out.wcs_world2pix(sky[0],sky[1],0)
        xs.append(xt)
        ys.append(yt)
    xtmin=int(np.min(xs)/1.1)
    if xtmin<0: xtmin=0
    xtmax=int(np.max(xs)*1.1)
    if xtmax>shape_out[1]: xtmax=shape_out[1]
    ytmin=int(np.min(ys)/1.1)
    if ytmin<0: ytmin=0
    ytmax=int(np.max(ys)*1.1)
    if ytmax>shape_out[0]: ytmax=shape_out[0]
    print(xtmin,xtmax,ytmin,ytmax)
    print('There will be',int(round((ytmax-ytmin)/blocks[0])*round((xtmax-xtmin)/blocks[1])),'chunks')
    # Create output arrays
    array = np.nan*np.ones(shape_out, dtype='float32')
    footprint = np.zeros(shape_out, dtype='float32')
    for imin in range(ytmin, ytmax, blocks[0]):
        imax = min(imin + blocks[0], array.shape[0])
        for jmin in range(xtmin, xtmax, blocks[1]):
            print('.', end=' ')
            sys.stdout.flush()
            jmax = min(jmin + blocks[1], array.shape[1])
            shape_out_sub = (imax - imin, jmax - jmin)
            wcs_out_sub = wcs_out.deepcopy()
            wcs_out_sub.wcs.crpix[0] -= jmin
            wcs_out_sub.wcs.crpix[1] -= imin
            array_sub, footprint_sub = reproj_interp(array_in, wcs_in, wcs_out_sub,
                                                            shape_out=shape_out_sub,
                                                            order=order)
            array[imin:imax, jmin:jmax] = array_sub
            footprint[imin:imax, jmin:jmax] = footprint_sub
    print() 
    return array, footprint