more user friendly
imporved logic