clean code, add comments