Begin implementing abstract platform

Ok, I made this more explicit in e5c5bfda33be275705add1dbef1253e0fa4afd45