1. Field
One or more example embodiments relate to targeted advertising, for example, to a method or system for targeting advertisements (“ads”) to television (“TV”) viewers using multiple services from a single provider.
2. Description of the Related Art
Over-the-top application service providers (e.g., web-based or online service providers) are generating larger revenues through effective targeting of content (e.g., ads) to users using their services. Selection of the best ad to display to the user is a well-known problem in web-based advertising. Service providers currently use relatively sophisticated algorithms to select the ad that best matches the user's current interests while simultaneously maximizing the service provider's web-based revenue from the ads. The user's current interest may be determined from search keywords and/or recent website visits. Such algorithms usually let an advertiser bid on the keywords that the advertiser determines useful for marketing its product.
While such solutions may be suitable for web-based advertising, these solutions are not suitable for television-based advertising. This is because there are substantial differences in the way ads can be placed between online services (e.g. web-based services) and TV services (e.g. broadcast or cable services).
According to an example embodiment, a system for scheduling advertisements includes at least one ad bidder and an ad scheduler. The at least one ad bidder is configured to receive bidding information for a plurality of ads from one or more advertisers. The bidding information for each ad includes at least one target profile information and a bid associated with the target profile information. The bid indicates expected revenue for showing the ad to a viewer having actual profile information corresponding to the target profile information associated with the bid. The ad scheduler is configured to schedule which of the plurality of ads is received by which of a plurality of viewers based on the actual profile information of the plurality of viewers and the bidding information such that an ad scheduled for one of the plurality of viewers is influenced by a correspondence of the scheduled ad to others of the plurality of viewers.
Example embodiments will become more fully understood from the detailed description given herein below and the accompanying drawings, wherein like elements are represented by like reference numerals, which are given by way of illustration only and thus are not limiting of the present invention, and wherein:
Various example embodiments will now be described more fully with reference to the accompanying drawings.
Specific structural and functional details disclosed herein are merely representative for purposes of describing example embodiments. Example embodiments may, however, be embodied in many alternate forms and should not be construed as limited to only the embodiments set forth herein.
Accordingly, while example embodiments are capable of various modifications and alternative forms, embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that there is no intent to limit example embodiments to the particular forms disclosed, but on the contrary, example embodiments are to cover all modifications, equivalents, and alternatives falling within the scope of example embodiments. Like numbers refer to like elements throughout the description of the figures.
It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element, without departing from the scope of example embodiments. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of example embodiments. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising,”, “includes” and/or “including”, when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. Other words used to describe the relationship between elements should be interpreted in a like fashion (e.g., “between” versus “directly between,” “adjacent” versus “directly adjacent”, etc.).
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which example embodiments belongs. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and should not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
It should also be noted that in some alternative implementations, the functions/acts noted may occur out of the order noted in the FIGS. For example, two FIGS. shown in succession may in fact be executed substantially concurrently or may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
Specific details are given in the following description to provide a thorough understanding of example embodiments. However, it will be understood by one of ordinary skill in the art that example embodiments may be practiced without these specific details. For example, systems may be shown in block diagrams in order not to obscure example embodiments in unnecessary detail. In other instances, well-known processes, structures and techniques may be shown without unnecessary detail in order to avoid obscuring example embodiments.
Also, it is noted that example embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process may be terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.
Moreover, as disclosed herein, the term “storage medium” may represent one or more devices for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. The term “computer-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing or carrying instruction(s) and/or data.
Furthermore, example embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as storage medium. A processor(s) may perform the necessary tasks. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
Where a service provider provides multiple service domains (e.g. internet, television and/or phone) to a user or viewer, the service provider is able to inspect a multitude of various user generated traffic and parameters, such as web-browsing activities of the users, TV channel surfing information, video-on-demand orders by the viewers, mobile traffic generated by the users, location information of mobile users, etc. The terms users and viewer may be used interchangeably.
Access to different service domains of the user by a single service provider provides opportunities for more enhanced advertisement selection. For example, the service provider only providing online services to the user via the Internet can place targeted content and ads only on web pages carrying the user's personalized results. However, the service provider providing services to the user via multiple service domains has unique information for personalizing services by collecting information available only in its network from across the multiple service domains. Thus, the service providers can blend the information gathered from the multiple service domains to enhance targeted advertising to the user for one or more of the user's service domains.
For example, the service provider may provide at least two service domains to the user, such as TV and online services. From the TV viewing patterns of the viewer, the service provider will be able to extract viewer viewing preferences. For instance, ads for sports cars can be sent to the viewer who watches auto racing events. From the online web traffic of the user, the service provider will be able to similarly extract user interests. Thus, an actual viewer profile created by the service provider from viewer interests will be more comprehensive because it will include profile information from the TV viewing patterns as well as the web traffic of the user. The ads can be added during web access as well as within TV programs. The ads in the TV service can be, for example, 30-seconds commercials as well as rolling text.
However, there are differences between a viewer display for online and TV services. For the online services, the advertisers compete on virtually unlimited screen space of a web page while for the TV services, the advertisers compete for limited screen time.
Regarding screen time, for the online services, targeted ads are displayed as and when the user completes a search. Whereas in the TV services, ads can be inserted only during defined ad time slots. Thus, different ads will contend for the limited number of time-slots for the TV services.
Regarding the timeliness of ads, for the online services, advertisers place online ads on websites when a user inquires about a related item. For the online services, the closer the ad is shown to the keyword search time, the more advantageous this is for the advertiser. With digital TV, ads may be targeted to the viewer or to a group of viewers in real-time since in digital TV it is possible to determine if a particular TV set is tuned to a particular channel in real-time.
Regarding the actual viewer profiles, for the online services, the service provider can use the user's past searches to better target an ad. For the TV services, the service provider has access to the viewer's viewing habits (e.g. by analyzing Internet Group Management Protocol (“IGMP”) logs for Internet Protocol Television (“IPTV”)) in addition to the web browsing profile, which can be used for more appropriate ad selection.
Another factor to consider is resource usage. For the TV service, the service provider should consider the viewer's current channel information and network resource availability for creating targeted ads to groups (instead of individual viewers) since dynamic ad insertion in a TV environment requires additional processing and networking resources. For example, if real-time ad splicing is used to insert ads into a broadcast stream, then the number of ads that can be shown during one time-slot is limited by the number of streams the splicer can splice in real-time. If channel switching is used to show a targeted ad, then the number of independent ads is limited by the number of available ad channels at the beginning of a time-slot.
For websites, bidding on ads by advertisers can be based on keywords and their rank order (popularity), whereas for IPTV service, bidding can be based on keywords, time-slot(s) to place the ad, timeliness of ad placement, number of shows to a viewer, chance of viewing the ad, etc.
In example embodiments, it is assumed that the service provider has knowledge of the actual viewer profile, which is based on multiple sources, and that the advertisers bid on the profiles to show an ad to a viewer. Therefore, an example embodiment may select and schedule ads to the viewers so that the highest or higher matched ad is shown to the viewer while maximizing or increasing the service provider's revenue.
The ad bidder 210 may include hardware and/or software capable of receiving, collecting, processing, and forwarding the bidding entry of the advertisers 1-n. For example, the ad bidder 210 may include a processor (not shown) to receive, process and forward the bidding entry and a memory (not shown) that may store the bidding entry and/or programs for use with the processor. The advertisers 1-n may send the bidding entry to the ad bidder 210 via a network (not shown). The network may include, for example, one or more networks (such as a cable or Internet network), control circuits, servers (such as application web servers or database servers), routers or gateways, hubs or switches, and various other network elements.
The advertiser's bidding entry 300 received by the ad bidder 210 is explained in more detail with respect to
The advertiser's ad item field indicates the ads (e.g. a clip, text, or image) that the advertiser wishes to display. The target viewer profile field allows the advertiser to indicate the type of viewers to which the advertiser seeks to correlate its ad. In particular, the target viewer profile field includes target profile information sub-fields for web-browsing and TV viewing. The web-browsing target profile information sub-field allows the advertiser to indicate a target web-browsing profile according to a category or sub-category and the TV viewing target profile information sub-field allows the advertiser to indicate a target TV viewing profile according to a category or sub-category. For example, in
The TV program field includes the sub-fields channel and ad slot. The TV program field allows an advertiser to bid for a particular ad slot during a particular TV program that can be identified through the channel and the ad slot fields (for simplicity of description, its is assumed that all ad slots for a TV channel are numbered). Thus, unlike internet ads, the TV program field allow advertisers to bid on the TV program in which the advertiser wants the ad to be shown.
All of the fields for the target viewer profile and TV program are optional. For example, the advertiser may only fill out the TV program field and leave the target viewer profile field blank. While the target viewer profile field lets the advertise target an individual or a group of viewers, the TV program field, which is an ad slot-based bid, focuses on demography based targeting as used in the current market place.
The field including the bid for each showing of the ad to each viewer indicates the amount of money the advertiser is willing to pay for each showing of the ad to each viewer. Alternatively, the bid may also apply to a group of viewers. The total ad budget field indicates the maximum amount of money that the advertiser is willing to pay in a given period. In the total ad budget field, sub-fields per day, per week and per month are included. The per day sub-field indicates the amount of money the advertiser is willing to spend per day. Similarly, the per week and per month sub-fields indicate the amount of money the advertiser is willing to spend per week and per month, respectively. The total ad budget field may also include additional fields for different periods of time such as per year, per weekday, per weekend, etc. Thus, the advertiser's bid is deducted from one or more sub-fields of the total ad budget field each time the advertiser's ad is shown to the viewer by the ad selector and scheduler 240, as explained in further detail below with respect to
Returning to
It is assumed that the service provider maintains an actual viewer profile that includes a database on the viewer's interests. This database can be a static one created by the service provider from external databases (e.g., zip code, credit history, etc), provided by the viewer (e.g., viewer explicitly sets preferences on ads), or created dynamically by monitoring the viewer's current activities (e.g., web browsing, TV viewing, mobile usage, etc). For example, in
The collected viewer's activities are used to rate the viewer's interests in the various categories and/or sub-categories, which are commonly used by the advertiser and the service provider, of the actual viewer profile of the viewer. The categories may be defined by keywords such as automobiles, travel, investing, cooking, etc. The sub- categories may be further defined by keyword such as auto sales, antique autos, auto maintenance, etc.
The viewing profile generator 220 and the browsing profile generator 230 may include hardware and/or software capable of receiving, collecting and processing individual viewing habit information from the viewer. For example, the viewing profile generator 220 and the browsing profile generator 230 may each include a processor (not shown) and a memory (not shown) that may store data and/or programs for use with the processor.
The viewing profile generator 220 is configured to generate the viewer's actual TV viewing profile based on mining the viewer's TV viewing habits and the browsing profile generator 230 is configured to generate the viewer's actual web browsing profile based on mining the viewer's web browsing habits. The actual TV viewing profile and the actual web browsing profile may form a single actual viewer profile or multiple actual viewer profiles. The viewing profile generator 220 is configured to mine the viewer's TV viewing habits based on information about at least one of a channel watched by the viewer and a time period the channel is watched by the viewer. The browsing profile generator 230 is configured to mine the viewer's web browsing habits based on information about at least one of the web pages visited and intern et searches by the viewer.
Devices of the viewer may include any type of device which allows the service provider to send and receive information regarding TV and online services to and from viewer, such as a TV, set top box (STB), computer, modem, etc, through the network (not shown).
For simplicity of description, the system 200 in
Based on the viewer's activity, the viewing profile generator 220 and the browsing profile generator 230 may each generate a score between 0 and 1 for the various categories and/or sub-categories of the actual viewer profile. The score indicates a strength of the correlation between the viewer's activities and the associated category and/or sub-category. For example, a score of “1” may indicate a strong correlation while a score of “0” may indicate a weak correlation. The correlation may be determined according to any algorithm known in the art. For example, the correlation may be determined based on a percentage of the viewer's total activities that fall under the associated category and/or sub-category during a defined period of time. The categories of each of the actual viewer profiles may be arranged in descending order of score.
In
The ad selector and scheduler 240 will then select the viewers that have a score above a certain threshold for the categories in their actual viewer profile that match the categories of the target viewer profile indicated by the advertiser. The ad selector and scheduler 240 is configured to schedule which ads are received by which viewers based on actual television and web-browsing habits of the viewers and the bidding information. For example, in
This allows the advertiser to tailor the same ad with different degrees of specificity according to different sets of desired viewers. As a result, the advertiser can more finely target the showing of its ads to yield higher revenue in relation to the money spent on advertising.
For example, in
Thus, in this case, the advertiser is willing to pay a much higher value (e.g. a bid of 20), which generates a higher revenue for the service provider, if the Cadillac ad is displayed to a viewer or group of viewers who show an interest in Cadillac sports cars through their TV and web browsing activities. On the other hand, the advertiser will pay a much a lower value (e.g. a bid of 2) to display the Cadillac ad to a viewer or group of viewers who only indicate an interest in cars through their TV and web browsing activities.
As explained above, the advertisers are allowed to bid on different types of target viewer profiles and/or TV ad slots of their interests through the ad bidders 210. The advertisers are also asked to allocate a budget for their bid that is valid for a period of time during which they are interested in showing their ad. The advertisers may specify the bid value once for a given time period or to change the bid value dynamically from time to time. Just before a time slot, the current viewer population and their profile information is retrieved from the viewing profile generator 220 and the browsing profile generator 230 by the ad selector and scheduler 240. This information, when matched with the advertisers' one or more target viewer profiles, generates a unique bid for each possible pair of viewer and ad.
A digital TV ad distribution system usually comes with some constraints, e.g., how many different ads can be shown to the population at a certain ad time slot, how much bandwidth can be used for serving ads, etc. For example,
The ad selector and scheduler 240 includes hardware and/or software capable of receiving, collecting, processing and forwarding information. For example, the ad selector and scheduler 240 may include a processor (not shown) to receive, process and forward information received from the ad bidders 210, the viewing profile generator 220, the browsing profile generator 230 and system constraints. The ad selector and scheduler 240 may also include a memory (not shown) that may store the received information and/or programs such as the ad selection algorithm for use with the processor.
Advertisement time slots are indexed by t=1,2, . . . , T. An ad can be shown to the viewer only if the viewer j is watching TV in the time slot t. Such a viewer j is one of the viewers of a set of viewers S(t) that are watching TV at the time slot t. It is assumed that at any time slot t, at most K distinct ads from a set of distinct ads Sk can be shown to the set of viewers S(t). As noted above, the number of distinct ads K that can be shown to the viewers is determined by the system constraints. For example, this may be accomplished by having K dedicated ad channels where each ad channel would show a different ad and any viewer can be switched to any ad channel for the duration of the advertisement. Alternatively, there may be in-network splicing capability for K streams and K different ads may be shown to different viewers by splicing the ads to their respective streams.
Therefore, the ad selector and scheduler 240 performs two steps at each of the time slots t: 1) selecting the set of distinct ads Sk that are to be shown at the current time slot t; and 2) scheduling each of the viewers j from the set of viewers S(t) to one of the ads in the set Sk.
The ad selector and scheduler 240 will be described in more detail below in conjunction with the flowchart of
In
At step S102, the ad selector and scheduler 240 determines the plurality of ads i that are available at the current time slot t. This may simply be the number of ads received for showing by the service provider. Steps S100 and S102 may be interchanged and/or combined.
At step S104, the ad selector and scheduler 240 forms an array of bids bt(i,j). Assuming that the advertisers have bid on target viewer profiles and/or ad slots, the bid bt(i,j) by the advertiser (or the expected revenue for the service provider) will be the highest bid for ad i associated with target profile and/or ad slot information corresponding to actual profile and/or ad slot information for viewer j. An example of an array of bids bt(i,j) is shown in
While discussed above in detail, derivation of an advertiser's bid bt(i,j) on a particular viewer j for the ad i will be reviewed below. If an advertiser bids on an ad slot, the set of viewers S(t) that are watching the channel can be readily determined in a digital TV distribution system. If the advertiser bids on a target viewer profile, the ad selector and scheduler 240 can determine from the actual viewer profile, the set of viewers S(t) that match the target viewer profile in which the advertiser is interested. If an advertiser bids on both the target viewer profile and an ad slot of the TV program, then an intersection of the above two sets gives the set of viewers S(t) in which the advertiser is interested. Moreover, as described in
Returning to
j ∈ S(t)
i ∈ Sk
w(i,j)=bt(i,j) (1−δ(t,t))
The throttling parameter δ(i,t) improves or optimizes spending of the advertiser's budget B(i), where the budget B(i) indicates a maximum amount the advertiser will pay to have the ad i displayed over a time duration, such as T. For example, incorporation of the throttling parameter δ(i,t) into determining the weight may act to ration the advertisers budget B(i) so that the advertiser is able to display an ad i over a longer period of time. Otherwise, without the throttling parameter δ(i,t), the advertiser's ad may be shown over a much shorter period of time. As will be shown below, the throttling parameter δ(i,t) for an ad i increases as the budget B(i) for the ad i decreases and the weight w(i,j) therefore decreases as the throttling parameter δ(i,t) increases.
Thus, the ad selector and scheduler 240 is configured to determine which of the plurality of ads i is received by which of the plurality of viewers j based the determined weights such that an expected revenue from showing an ad as indicated by the bid bt(i,j) is discounted based on an amount of the budget B(i) used. This will be described in more detail below.
The ad selector and scheduler 240 implements a primal-dual algorithm with the throttling parameter δ(i) and a monitoring parameter π(t) denoting the dual variables. In order to track the changes in the value of the dual variable δ(i), an explicit index is added for time to derive the throttling parameter δ(i,t), which is used to denote the value of the dual variable δ(i) at the end of time slot t. The dual variable TO may be used for analysis of the ad selection algorithm used by the ad selector and scheduler 240, but the value of π(t) is not used for actual ad selection by the ad selector and scheduler 240. The dual variable π(t) will be explained in further detail below.
The dual variables δ(i) and π(t) are initialized to zero for all the ads i and the dual variables δ(i) and π(t) are updated in each time slot t. A revenue T(i,t) generated from the ad i in the time slot t is also initialized to zero for all the ads i. The revenue T(i,t) is based on the bid value bt(i,j) of an ad i selected by the ad selector and scheduler 240 and shown to viewer j, as shown by the equation below.
T(i,t)←T(i,t)+bt(i,j)
It is noted that T(i,t) is zero when the ad i is not scheduled at time t. Also
represents the total amount of revenue generated from ad i up to time slot t. The ad selector and scheduler 240 ensures that
for all ads i.
The throttling parameter δ(i,t) is based on a value of the throttling parameter at a previous time slot δ(i,t-1) and a portion of the budget used B(i) to create the revenue T(i,t) along with additional control parameters a, c, and R, as shown by the following equations.
Returning to
Returning to
At step S112, the ad selector and scheduler 240 determines whether the ad number k is equal to a system constraint K. This is because, as described above, the number of ads k that can be shown at any given time slot t is limited to a maximum of K ads.
If the ad selector and scheduler 240 determines that the ad number k is not equal to the system constraint K, then the ad selector and scheduler 240 will select another ad at step S114. Otherwise, the ad selector and scheduler 240 will proceed to step S118, as described below. In this case, we will assume that the system constraint K=3. Therefore, the ad selector and scheduler 240 will proceed to step S114 to select another ad.
At step S114, the ad selector and scheduler 240 adjusts the weighted array and then selects another ad.
For example, referring to
Next, similar to
Returning to
Next, the ad selector and scheduler 240 returns to step S112 to determine whether the ad number k is equal to the system constraint K. As the ad number k is currently 2 and the system constraints variable K is 3, the ad selector and scheduler 240 will return to step S114.
As explained above, at step S114, the ad selector and scheduler 240 adjusts the weighted array based on the selected ads and then selects another ad.
For example referring to
After the above minimizing of the weights is carried for the unselected third through fifth ads 3-5, the total weight for each of the unselected ads 3-5 is determined by the ad selector and scheduler 240. As shown in
Returning to
Next, the ad selector and scheduler 240 again returns to step S112 to determine whether the ad number k is less than the system constraint K. As the ad number is now 3 and the system constraint K is 3, the ad selector and scheduler 240 proceeds to step S118.
At step S118, the ad selector and scheduler 240 is configured to schedule which of the selected ads is received by which of the plurality of viewers based on the weighted array 610 in
For example, as shown in
For the second viewer 2, the fourth selected ad 4 has a highest weight of 3 from the first, second and fourth selected ads 1, 2 and 4, where the first and second selected ads 1, 2 have respective weights of 2 and 1 for the second viewer 2. Therefore, the ad selector and scheduler 240 schedules the fourth selected ad 4 to the second viewer 2.
For the third viewer 3, the second selected ad 2 has a highest weight of 5 from the first, second and fourth selected ads 1, 2 and 4, where the first and fourth selected ads 1, 4 have respective weights of 1 and 0 for the third viewer 3. Therefore, the ad selector and scheduler 240 schedules the second selected ad 2 to the third viewer 3.
For the fourth viewer 4, the fourth selected ad 4 has a highest weight of 1 from the first, second and fourth selected ads 1, 2 and 4, where the first and second selected ads 1, 2 have respective weights of 0 and 0 for the fourth viewer 4. Therefore, the ad selector and scheduler 240 schedules the fourth selected ad 4 to the fourth viewer 4.
As shown in
Upon completion of mapping all the users to one of the selected ads, the ad selector and scheduler 240 may update the throttling parameter δ(i,t) for the next time slot, where the method of
Further, while the method of
According to an example embodiment, the ad selector and scheduler 240 schedules which of the plurality of ads is received by which of the plurality of viewers based on the bids, the budgets and the system constraints.
At the end of each time period, a dual feasible solution is maintained. The value of the dual variable π(t) is computed at time slot t and is not updated later. As explained above, the dual variable π(t) is only used for analysis of the ad selection algorithm and is not used for selecting or scheduling of the ads L The dual variable g(t) is based on at least the revenue T(i,t) and a value of the throttling parameter from the previous time slot δ(i,t-1), as shown by the below equation.
Returning to
While the system of
All of the above described functions may be readily carried out by special or general purpose digital information processing devices acting under appropriate instructions embodied, e.g., in software, firmware, or hardware programming.
Further, elements and/or features of different example embodiments may be combined with each other and/or substituted for each other within the scope of this disclosure and appended claims.
Still further, any one of the above-described and other example features of the present invention may be embodied in the form of an apparatus, method, system, computer program and computer program product. For example, of the aforementioned methods may be embodied in the form of a system or device, including, but not limited to, any of the structure for performing the methodology illustrated in the drawings.
Even further, any of the aforementioned methods may be embodied in the form of a program. The program may be stored on a computer readable media and is adapted to perform any one of the aforementioned methods when run on a computer device (a device including a processor). Thus, the storage medium or computer readable medium, is adapted to store information and is adapted to interact with a data processing facility or computer device to perform the method of any of the above mentioned embodiments.
Example embodiments being thus described, it will be obvious that the same may be varied in many ways. Such variations are not to be regarded as a departure from the invention, and all such modifications are intended to be included within the scope of the invention.