complete surface functions