new surface class: terrible