Final Version before check point 1