Varias melhorias, mas ainda incompleto e sem muitos testes.