improved interpolation class