added all the code
