Almost Done ! UNTESTED halfway commented