v2.0 - DRY and Clean