This is the Final version of our group project for CS246.