Added modification, and incomplete solution.