def spider(g, matches):
    """Performs spider fusion given a list of matchings from ``match_spider(_parallel)``
    """
    rem_verts = []
    etab = dict()
    types = g.types()
    for m in matches:
        if g.row(m[0]) == 0:
            v0, v1 = m[1], m[0]
        else:
            v0, v1 = m[0], m[1]
        g.add_to_phase(v0, g.phase(v1))
        if g.track_phases:
            g.fuse_phases(v0, v1)
        rem_verts.append(v1)
        for w in g.neighbours(v1):
            if v0 == w:
                continue
            e = v0, w
            if e not in etab:
                etab[e] = [0, 0]
            etab[e][g.edge_type((v1, w)) - 1] += 1
    return etab, rem_verts, [], True
