Split Surface into two classes: Surface and ClientSurface
Add a RendererData interface to Surface