final version/Not commented