added transform surface function