Started porting across Surface functions