added SurfacePlotter class