add interpolate function