Re-write interpolation to be more sensible.