Switch to an explicit curve object.

Happily, this eliminates just about all of the error cases.
7 files changed