Funcionando mais ou menos, faltar refinar tudo.