add interpolate function as circular dependency