Final Version (Passed Checking)