I made the whole required code