all the code is commented