[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.
Se essa parte estiver ok até onde eu fiz, aceita o pull request e trabalha em cima dele.