Order for Surface Shader / CG frag passes?

Is there a specific order when combining a CGfx vert/frag pass with a Surface Shader?

I’ve recently been able to finally upgrade from Unity2.6 to 3.3 so I’ve been in the process of rewriting my custom shaders. I have a complex vert/frag shader that holds a number of alpha blended passes in it that I could get to work with just CGfx but I would like to take advantage of using the Lambert lighting model from a Surface Shader for better diffuse responses from multiple lights.

I’ve come across one shader that has a CGProgram followed by the Surface Shader, but I’d like to do the opposite so that the Surface Shader is the base followed by the passes. Can these just be combined in any order? SS->CG? CG->SS->CG?

Also can I just stack the ForwardAdd passes without having a ForwardBase inbetween?

TIA

Surface shaders are interpreted/compiled into frag/vert shaders with lighting. Most of my shaders I just moved the frag and vert into the surf function and unity figured out the ins and outs. It then compiles it all into passes and different d3d/gl & forward/vert/deferred settings.

I don’t know about the ForwardAdd and ForwardBase.