so far, this is the only part i don't love.  having options.terrain = [] everywhere is gross.

how about options.terrain = true => flat terrain.  and unspecified implies no terrain.  this is a change to the current interface (currently, unspecified = flat terrain if there are contacts, otherwise no terrain), but we've had a handful of external users that were (justifiably) confused by the default behavior.