using surface write