Well! I really like Zack's proposed conversion plan in the PDF, but particularly the order, and of that particularly the early stages. I see no problem with the "top level" separation into entirely distinct base classes, of the sort which require explicit work to treat as a union. And I don't see a real benefit to worrying about cleaning up the lower levels until the top level separation is done, since that's by far the ugliest.
I'd probably pause and reevaluate after peeling the "type" type away from the "tree" type. We'll already have reaped substantial typechecking advantages at that point, and it's not worth worrying about the later stages too early, since it will probably take quite a while to get to that point. In other words: Do the first part already, and worry about the later part later. :-) -- This space intentionally left blank.