Update to use surfaces