added new description. refactored code