1.deep clone when generating new state 2.add test cases