1. A method of exchanging data between software components on a portable device, comprising: activating a first software component using the portable device; communicating with a service provider to identify a first data type used by the first software component, the first data type corresponding to data that must be retrieved from a service provider, wherein identifying the first data type comprises: providing a list of data types available for the first software component from the service provider; and selecting a subset of the list of data available for the first software component, wherein the first data type comprises selected data and excludes un-selected data; identifying a second data type used by the first software component, the second data type corresponding to other data previously retrieved from the service provider by the portable device; retrieving data corresponding to the first data type from a the service provider for the first software component at the portable device, retrieving the other data corresponding to the second data type from the portable device; displaying on the portable device a return content result including data corresponding to an aggregation of both the first data type and the second data type; identifying common data from at least one of at least a portion of the data retrieved from the service provider and at least another portion of the other data retrieved from the portable device, the common data being used by the first software component and a second software component; receiving input designating the second software component to activate at the portable device; initiating a call by the first software component to toad activate the second software component in response to the input; activating the second software component; and exchanging the common data between the second software component and the first software component.