[WIP] Adicionando casts as plataformas

Como esse é um pull request mais longo, abri ele logo antes de terminar, assim podemos ir debatendo aqui o código.
Vi que você tá usando bang methods. Isso vai dar raise em uma excessão. Como você trata isso?