Version with full comments

Every change is already commented :D