Commented and cleaned the code a bit