Varias Alteracoes no codigo para deixar ele mais organizado. algumas
validacoes.