surface refactoring