updates SurfaceT to use shared_pointers