refatorando usando algumas ideias do lexfi...