Tian's branch

currently worked about 45min towards this problem. Will continue working on the first and last method to finish