finished the whole problem generation branch