Perfect version
Added some changes