finish all this, then change the graph coloring, and factory