more comments and easier to read