tidied up interpolation