Begin implementing abstract platform

I rebased, making the struct identifies consistent with the struct names. Dunno if that makes it clearer.