easier to read, added comments in