Begin implementing abstract platform

It's tricky to assign in/out to duplex streams because they are bidirectional :(