added coment in the class to help understand