Final with unit Tests. NO CODE COMMENTS