Interpolation refactor

Huge thing
Please read the commits.