refactor Surface
static is uglier, but everything else is prettier.