Add comments and explainations