improved interpolation