refactoring, se agregan comentarios y se ordena el codigo.