Final version for Assigment