Fazendo do jeito certo, codigo quase totalmente mudado