adicionei um monte de função "isAlgumaCoisa" para tentar deixar o código mais legível