surrogate conversion reshaped, now supports nesting, enforces proper surrogate classes