what's the difference between infoobject and infoprovider?