1. implement SurfaceMesh
2. add some new asserts