cherry picked some files from the bipartite branch and merged them