modificando codigo pra facil leitura
modificando para melhorar implementacao