Add surface abstraction layer