Add solution, need to fix some bugs