Make more readable, add comments