refactor surface