def conway_kis(mesh):
    """Generates the kis mesh from a seed mesh.

    Parameters
    ----------
    mesh : Mesh
        A seed mesh

    Returns
    -------
    mesh
        The kis mesh.

    References
    ----------
    Based on [1]_ and [2]_.

    .. [1] Wikipedia. *Conway polyhedron notation*.
           Available at: https://en.wikipedia.org/wiki/Conway_polyhedron_notation.
    .. [2] Hart, George. *Conway Notation for Polyhedron*.
           Available at: http://www.georgehart.com/virtual-polyhedra/conway_notation.html.

    """
    mesh_class = type(mesh)

    vertices = [mesh.vertex_coordinates(vkey) for vkey in mesh.vertices()] + [mesh.face_centroid(fkey) for fkey in mesh.faces()]

    old_vertices_to_new_vertices = {vkey: i for i, vkey in enumerate(mesh.vertices())}
    old_faces_to_new_vertices = {fkey: i + mesh.number_of_vertices() for i, fkey in enumerate(mesh.faces())}

    faces = [[
        old_vertices_to_new_vertices[u], old_vertices_to_new_vertices[v], old_faces_to_new_vertices[mesh.halfedge[u][v]]
        ] for fkey in mesh.faces() for u, v in mesh.face_halfedges(fkey)]

    return mesh_class.from_vertices_and_faces(vertices, faces)