some more cleanup, move Surface stuff to Surface.js