adding surface to reuse code