I'd love any feedback you have. I haven't focused on performance much yet (although I think I've made reasonable design decisions in general). I think there's some caching I can do on cubic splines which might be beneficial, but I'll obviously need to do some benchmarks to see if they're worthwhile.