add some comment and new solution