adicionado algumas validações e comentários