1. Field of the Invention
The present invention relates to online advertising, and in particular, to search engine-related advertising.
2. Background Art
A search engine is an information retrieval system used to locate documents and other information stored on a computer system. Search engines are useful at reducing an amount of time required to find information. One well known type of search engine is a Web search engine which searches for documents, such as web pages, on the “World Wide Web.” Examples of such search engines include Yahoo! Search™ (at http://www.yahoo.com), Ask.com™ (at http://www.ask.com), and Google™ (at http://www.google.com). Online services such as LexisNexis™ and Westlaw™ also enable users to search for documents provided by their respective services, including articles and court opinions. Further types of search engines include personal search engines, mobile search engines, and enterprise search engines that search on intranets, among others.
To perform a search, a user of a search engine supplies a query to the search engine. The query contains one or more words/terms, such as “hazardous waste” or “country music.” The terms of the query are typically selected by the user to as an attempt find particular information of interest to the user. The search engine returns a list of documents relevant to the query. In a Web-based search, the search engine typically returns a list of uniform resource locator (URL) addresses for the relevant documents, which is displayed to the user in a search results page. If the scope of the search resulting from a query is large, the returned list of documents may include thousands or even millions of documents.
“Sponsored search” refers to a form of Internet advertising/marketing that enables advertisers to increase their visibility in the results page of a search engine query. According to sponsored search, an advertiser may pay or provide other compensation for having an advertisement appear in a sponsored section of the results page for one or more particular queries. A user who enters one of the queries into the search engine is provided with a results page that includes the advertisement in the sponsored search section. The sponsored search section is prominently displayed in the results page, to enable the user to easily see and interact with the advertisement. In this manner, an advertiser is enabled to provide advertisements to users that are directly related to their queries.
“Context” in sponsored search is additional information such as age, gender or geographical location of a user associated with a query that can change the relevance or value of the query to an advertiser. For example, an advertiser may be interested in promoting a product to a particular gender, to a particular age demographic (e.g., persons in the range of 15-35 years of age), and/or to a particular locality. By taking such context into account when performing sponsored search operations, a search engine can target advertisements even more precisely for advertisers. For example, the age of a user that inputs a query to a search engine may be known. If the age of the user is within an age range of heightened relevance to an advertiser, the advertiser may be willing to provide additional compensation to have the advertisement prominently appear in the search results page for that user.
Context related to users is becoming an important factor in sponsored search. Advertisers may be willing to pay more for advertisements displayed in results pages for desirable combinations of query terms and known context information. Thus, context can potentially be used to generate additional revenue for companies that operate search engines. However, conventional sponsored search systems do not currently price context efficiently. Thus, such systems do not currently generate as much additional revenue as may be possible.
Sponsored search auction systems are provided that bundle context. A sponsored search auction system is configured to receive bids for queries from advertisers. Each bid is for a particular context relating to a user that may submit the query to a search engine. The bids provide a valuation for each available context of the query for each advertiser. The bids are processed to generate one or more context bundles. The context bundles are groupings of contexts. Not all contexts are necessarily bundled. The bundled and unbundled (if present) contexts may be sold to the advertisers. Selling of contexts in bundled form may enable increased revenue to be generated as compared to auction systems that sell each context separately or sell all contexts bundled into a single group.
In one example, a method for a sponsored search auction is provided. A matrix of valuations is received that includes a valuation for each context of a set of contexts for each agent of a plurality of n agents. At least one context bundle is generated that includes one or more contexts of the set of contexts based on the received matrix of valuations. The at least one context bundle is sold to at least one corresponding agent of the plurality of n agents.
In a further example, a sponsored search auction system is provided. The sponsored search auction includes a context bundler. The context bundler is configured to bundle contexts related to a query. The context bundler is configured to receive a matrix of valuations that includes a valuation for each context of a set of contexts for each agent of a plurality of n agents, and to generate at least one context bundle that includes one or more contexts of the set of contexts based on the received matrix of valuations.
The sponsored search auction system may further include an input interface configured to receive bids for the set of contexts from the agents to form the valuation matrix. Furthermore, the sponsored search auction system may include an output interface configured to enable the agents to pay for the generated context bundles.
In an example, the context bundler may be configured to calculate a first revenue according to:
where
The context bundler may be configured to compare the first revenue to the second revenue to determine one or more context bundles.
In an example, the context bundler may be configured to compare the first revenue to the second revenue. If the first revenue is greater than or equal to (≧) the second revenue, each context of the subset of contexts corresponding to the first agent may remain unbundled, and the subset of contexts corresponding to subsequent pairs of agents (e.g., a first pair that includes agents 2 and 3, a second pair that includes agents 4 and 5, etc.) may be bundled together to form a first set of n/2 context bundles. If the second revenue is greater than the first revenue, the subset of contexts corresponding to each adjacent pair of agents, starting with the first agent (e.g., a first pair that includes agents 1 and 2, a second pair that includes agents 3 and 4, etc.) may be bundled together to form a second set of n/2 context bundles.
Note that in some cases, one or more of the context bundles may be empty.
In an example implementation, the context bundler may include a first valuation determiner, a second valuation determiner, a context subset determiner, a first calculator, an ordering module, a second calculator, a first summer, a second summer, a third summer, and a bundling module. The first valuation determiner is configured to determine a highest valuation in the matrix of valuations for each context of the set of contexts. The second valuation determiner is configured to determine a second highest valuation in the matrix of valuations for each context of the set of contexts. The context subset determiner is configured to determine a subset of contexts of the set of contexts corresponding to each agent. The first calculator is configured to calculate a total valuation of the corresponding subset of contexts for each agent. The ordering module is configured to number the agents from an agent one (first agent) to an agent n in order of decreasing calculated valuation of the corresponding subset of contexts. The second calculator is configured to calculate for the first agent a sum of the determined second highest valuations for the corresponding subset of contexts. The first summer is configured to sum the total valuations determined for odd numbered agents (other than the first agent) to determine a first sum. The second summer is configured to sum the first sum and the sum calculated for the first agent to determine a first revenue. The third summer is configured to sum the total valuations determined for even numbered agents to determine a second revenue. The bundling module is configured to bundle the set of contexts based upon the first revenue and the second revenue.
These and other objects, advantages and features will become readily apparent in view of the following detailed description of the invention. Note that the Summary and Abstract sections may set forth one or more, but not all exemplary embodiments of the present invention as contemplated by the inventor(s).
The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the pertinent art to make and use the invention.
The present invention will now be described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements. Additionally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.
The present specification discloses one or more embodiments that incorporate the features of the invention. The disclosed embodiment(s) merely exemplify the invention. The scope of the invention is not limited to the disclosed embodiment(s). The invention is defined by the claims appended hereto.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Embodiments of the present invention enable the bundling of context in sponsored search applications.
As shown in
Search engine 106 may be implemented in hardware, software, firmware, or any combination thereof. For example, search engine 106 may include software/firmware that executes in one or more processors of one or more computer systems, such as one or more servers. Examples of search engine 106 that may be accessible through network 105 include, but are not limited to, Yahoo! Search™ (at http://www.yahoo.com), Ask.com™ (at http://www.ask.com), and Google™ (at http://www.google.com).
“Sponsored search” refers to a form of Internet advertising/marketing that enables advertisers to increase their visibility in the results page of a search engine query. In sponsored search, an advertiser may pay or provide other consideration for having information, such as a link to a website of the advertiser, appear in a sponsored section of the results webpage for one or more particular queries. The sponsored section is prominently displayed in the results page, to enable the user to easily view and interact with the displayed information of the advertiser. In this manner, an advertiser is enabled to provide advertisements to users that are directly related to their queries.
In the example of
“Context” in sponsored search is additional information such as age, gender or geographical location of a user associated with a query that can change the relevance or value of the query to an advertiser. For example, an advertiser may be interested in promoting a product to a particular gender, a particular age demographic (e.g., persons in the range of 15-35 years of age), and/or a particular locality. By taking such context into account when performing sponsored search operations, a search engine can target advertisements even more precisely for advertisers.
For instance, the query term “tools” may have heightened relevance to the advertiser when combined with particular context information. For example, users in the age range of 20-40 that input the query term “tools” may have heightened relevance to the advertiser. Thus, the advertiser may be willing to provide additional compensation (e.g., to a controlling/operating entity of search engine 106) to have an advertisement appear in the search results page for the query term “tools” for users in the age range of 20-40.
In many cases, an auction is used to sell sponsored search advertisements. An auction system may be used to enable advertisers to bid to provide advertising for particular combinations of queries and context. A separate auction is run for each query. Context may be taken into account in such auctions. Two types of such auction systems that take context into account include a “pure bundled auction” (also referred to as a completely bundled auction) and a “completely unbundled auction.” In a completely bundled auction, all context for a query may be bid for in a single auction (e.g., similar to a case where context is not taken into account). For example, an auction may be performed for a combination of the query term “tool” over all age ranges. In a completely unbundled auction, each context for a query may be bid for in a separate auction. Thus, multiple auctions are performed in a completely unbundled auction, one for each context. For example, a first auction may be performed for a combination of the query term “tool” and the age range of 21-30, and a second auction may be performed for a combination of the query term “tool” and the age range of 31-40.
Completely bundled auctions and completely unbundled auctions have disadvantages. In general, advertiser welfare is maximized if a separate auction is performed for each context. However, due to a potential for lack of competition within each context, a significant loss in revenue to the search engine (e.g., to an owner, operator, and/or controlling entity of search engine 106) may occur. Neither completely bundled nor completely unbundled auctions are configured to maximize revenue for the auctioning entity. Thus, a search engine may not reach its earning potential by using completely bundled auctions and completely unbundled auctions.
Embodiments of the present invention provide for an intermediate form of context bundling in auctions that enable improved revenue for auctioning entities when compared to completely bundled and completely unbundled auctions. Example embodiments of the present invention are described in detail in the following section.
Example embodiments are described for bundling context with respect to a query auction. The example embodiments described herein are provided for illustrative purposes, and are not limiting. Further structural and operational embodiments, including modifications/alterations, will become apparent to persons skilled in the relevant art(s) from the teachings herein.
Any suitable type of context relevant to a query may be bundled in embodiments of the present invention. Example types of context include age (e.g., numerical age; categorical age such as senior, adult, teen, or child; etc.), gender (e.g., male or female), geographical location (e.g., country, state, city, zip code, IP address, etc.), hobbies or interests, education level (e.g., none, elementary school, high school, college, advanced degree, etc.), type of employment, and/or further types of context.
Sponsored search auction system 400 may be implemented in hardware, software, firmware, or any combination thereof. For example, sponsored search auction system 400 may be hosted in one or more computer systems that each include one or more processors and/or logic configured to enable the functionality of auction system 400.
Sponsored search auction system 400 may operate in a variety of ways. For example,
Flowchart 500 begins with step 502. In step 502, a matrix of valuations is received that includes a valuation for each context of a set of contexts for each agent of a plurality of n agents. In an embodiment, as shown in
The valuations in matrix of valuations 410 may be represented in any suitable manner, including as monetary amounts (e.g., in dollars or other currency.). A valuation may be selected by an agent in any manner. For example, in an embodiment, a valuation may be a calculated quantity. For example, a valuation for a context may be determined as a click through rate (CTR) multiplied by a value-per-click, which may be a historical CTR (e.g., determinable from query log 108 shown in
As shown in
In an embodiment, auction input interface 402 may be configured to enable agents to provide valuations to auction system 400 from one or more remote computer systems. For instance,
Computers 702a-702n may enable agents to input bids 408 over communication links 710a-710n in a variety of ways. For example, an agent using first computer 702a may use a browser 712 to access a website 714 hosted by auction input interface 402. Website 714 may have a form or other input mechanism that the agent using first computer 702a can use to input a bid 408. In an embodiment, website 714 is a web service that provides an interface for accessing sponsored search auction system 400 of
Network 704 may be any type of communication network, such as a local area network (LAN) or wide area network (WAN), or a combination of networks, such as the Internet. Communication links 710 may be any type or combination of communication links suitable for coupling devices to a network, including wired and/or wireless links, such as IEEE 802.11 wireless LAN (WLAN) wireless links, Ethernet links, USB links, etc. Network interface 706 may include any type of network interface, including a wired or wireless interface, such as an as IEEE 802.11 wireless LAN (WLAN) wireless interface, an Ethernet interface, a USB interface, etc.
In step 504, at least one context bundle is generated that includes one or more contexts of the set of contexts based on the received matrix of valuations. In an embodiment, step 504 may be performed by context bundler 404 shown in
Bundling of contexts by context bundler 404 for an auction enables revenue to be increased (including maximizing revenue in some cases), as compared to auctions that completely bundle all contexts or leave all contexts completely unbundled. In an embodiment, bundling of context by context bundler 404 may achieve a half or more of the maximum revenue that may be achieved by an optimal bundling of contexts. Furthermore, in an embodiment, bundling of context by context bundler 404 may achieve a half or more of the maximum efficiency that may be achieved by an optimal bundling of contexts.
Context bundler 404 may be implemented in hardware, software, firmware, or any combination thereof. For instance, in an embodiment, context bundler 404 may be implemented in computer code that executes in one or more processors. In another embodiment, context bundler 404 may be implemented as logic in one or more electrical circuits, such as an application specific integrated circuit (ASIC). Further example embodiments for context bundler 404 are described in detail further below.
In step 506, the at least one context bundle is sold. As shown in
Auction output interface 406 may include any sort of interface, or a collection of interfaces, that enables the bundled (and any unbundled) contexts to be provided. For example, auction output interface 406 may include an output device, such as a printer, a display device, and/or any other suitable user interface mechanism to provide the bundled contexts and any unbundled contexts to the corresponding agents. Furthermore, auction output interface 406 may provide an interface that enables the agents to pay for the provided bundled contexts and any unbundled contexts. In an embodiment, auction output interface 406 may include a network interface (e.g., network interface 706 shown in
Context bundler 404 shown in
In an embodiment, context bundler 404 may be configured to perform Equations 1 and 2 shown below to generate first and second revenues. The first and second revenues may be used to determine one or more bundles of contexts:
where
i=an agent of the plurality of n agents,
j=a context of the set of contexts in the matrix of valuations,
vij=a valuation of context j by agent i in the matrix of valuations,
hj=a highest valuation for context j in the matrix of valuations,
sj=a second highest valuation for context j in the matrix of valuations,
Ai=a subset of the set of contexts for which an agent i has provided the highest valuation (s), and
wi=a sum of highest context valuations hj provided by agent
Note that the agents are numbered from an agent one (first agent) to an agent n in order of decreasing calculated valuation of the corresponding subset of contexts (i.e., numbered so that w1≧w2≧w3≧ . . . ≧wn).
To determine context bundles, in an embodiment, context bundler 404 may be configured to compare Revenue 1 to Revenue 2. In a first case, if Revenue 1 is greater than or equal to Revenue 2, context bundler 404 may be configured to provide one or more separate contexts and one or more bundled contexts in context bundle signal 412. In a second case, if Revenue 2 is greater than Revenue 1, context bundler 404 may be configured to provide one or more bundled contexts in context bundle signal 412. Context bundler 404 may bundle contexts in various ways based on Revenue 1 and Revenue 2. Examples of such bundling are described further below.
Context bundler 404 may be configured in various ways to determine context bundles according to Equations 1 and 2.
Flowchart 800 begins with step 802. In step 802, a highest valuation in the matrix of valuations for each context of the set of contexts is determined. As shown in
For instance, Table 1 below shows an example of matrix of valuations 410 for a query “bicycle”:
In the example of Table 1, three agents are included, and the set of contexts includes six age ranges of 0-12, 13-19, 20-39, 40-59, 60-69, and 70-100. As indicated in Table 1, agent 1 values ages 0-12 a medium amount (valuation of 1.0), ages 13-19 a high amount (valuation of 2.0), age 20-39 the least (valuation of 0), age 40-59 a medium amount (valuation of 1.0), ages 60-69 a low amount (valuation of 0.5), and ages 70-100 the highest (valuation of 2.5). Agents 2 and 3 have similarly provided valuations for all six age ranges.
First valuation determiner 904 may be configured to determine the highest valuation present for each context in any manner, including by comparing the listed valuations on a context (column) basis. With regard to the example matrix of valuations 410 shown in Table 1, first valuation determiner 904 may generate highest valuation indication signal 930 to include the highest valuation information included in Table 2 below:
In step 804, a second highest valuation in the matrix of valuations for each context of the set of contexts is determined. As shown in
In step 806, a subset of contexts of the set of contexts corresponding to each agent of the plurality of n agents is determined, the determined subset of contexts for an agent including any contexts of the set of contexts for which the agent has the determined highest valuation. As shown in
With regard to the example matrix of valuations 410 shown in Table 1, and the example highest valuation information in Table 2, context subset determiner 908 may generate context subset signal 934 to include the context subset information included in Table 4 below, where each row corresponds to a context subset for an agent:
In step 808, a total valuation of the corresponding subset of contexts is calculated for each agent of the plurality of n agents. As shown in
With regard to the example of context subset signal 934 shown in Table 4, first calculator 910 may generate subset total valuation signal 936 to include the subset valuation information included in Table 4 below:
In step 810, the plurality of n agents is numbered from an agent one (first agent) to an agent n in order of decreasing calculated valuation of the corresponding subset of contexts. As shown in
With regard to the example of subset total valuation signal 936 shown in Table 5, ordering module 912 may generate ordered subset total valuation information signal 938 by renumbering agent 2 as agent 3, and renumbering agent 3 as agent 2, to reorder the total valuations listed in Table 5 in order of decreasing calculated valuation. Table 6 below shows the reordered version of the agents listed in Table 5 to represent an example of ordered subset total valuation signal 938.
In step 812, a sum of the determined second highest valuations for the subset of contexts corresponding to the first agent is calculated. As shown in
With regard to the example of ordered subset total valuation information signal 938 described above, agent 1 indicated in Table 6 is the same as agent 1 in Table 3. Table 3 includes two second highest valuations for agent 1-1.0 for ages 40-49 and 0.5 for ages 50-59. Thus, second calculator 914 may generate first agent second highest valuation sum 942 to be 1.5 (1.0+0.5) in the current example.
In step 814, the total valuations determined for odd numbered agents other than the first agent are summed to determine a first sum. As shown in
In the current example, the only odd agent (other than agent 1) is agent 3. For the example of ordered subset total valuation signal 938 shown in Table 6, agent 3 has a total valuation of 2.0. Thus, first summer 916 may generate first sum 940 to be 2.0 in the current example.
In step 816, the first sum and the sum calculated for the first agent are summed to determine a first revenue. As shown in
In the current example, first sum 940 (for agent 3) is 2.0, and first agent second highest valuation sum 942 (for agent 1) is 1.5. Thus, second summer 918 may generate first revenue 944 to be 3.5 (2.0+1.5) in the current example.
In step 818, the total valuations determined for even numbered agents are summed to determine a second revenue. As shown in
In the current example, the only even agent is agent 2. For the example of ordered subset total valuation signal 938 shown in Table 6, agent 2 has a total valuation of 4.0. Thus, third summer 920 may generate second revenue 946 to be 4.0 in the current example.
In step 820, the set of contexts is bundled based upon the first revenue and the second revenue. As shown in
Bundling module 922 may perform a comparison of first revenue 944 and second revenue 946 to determine a bundling configuration for the set of contexts. In an embodiment, if bundling module 922 determines that first revenue 944 is greater than or equal to (≧) second revenue 946, process 1000 of
Process 1000 shown in
Process 1100 of
Continuing the current example, Revenue 1 (3.5) is compared to Revenue 2 (4.0). In this example, Revenue 2 is greater than Revenue 1. Thus, in the current example, process 1100 of
Referring to Table 4 above, agent 1 has a context subset of age ranges 0-12, 13-19, and 70-100. Agent 2 has a context subset of age ranges 20-39. Agent 3 has a context subset of age ranges 40-59 and 60-69. Thus, the generated first context bundle (agents 1 and 2) includes age ranges 0-12, 13-19, 20-39, and 70-100, and the generated second bundle (agent 3) includes age ranges 40-59 and 60-69. These first and second context bundles are output by context bundler 900 in
For the current example, in a second price auction, it is noted that the revenue derived from selling the contexts to agents 1-3 in a completely unbundled manner is 5.5 (the sum of the valuations shown in Table 3). The revenue derived from selling the contexts to agents 1-3 in a completely bundled manner is 5.5, because the completely bundled valuations provided by agents 1-3 (shown in Table 1) are 7.0, 4.5, and 5.5, respectively, and 5.5 is the second highest valuation. In contrast, in the current example embodiment, first and second context bundles are created. The context bundles have the following valuations shown in Table 7 (calculated from the valuations shown in Table 1):
As indicated in Table 7, in a second price auction, auction output interface 406 may sell the first and second context bundles for 4.5 and 1.5, respectively, for a total revenue of 6.0. The total revenue of 6.0 in the current example embodiment is greater than the revenues of 5.5 and 5.5 available in the completely bundled and completely unbundled 602 auction techniques. Thus, in the current example embodiment, additional revenue may be collected by generating bundled contexts (the first and second context bundles), rather complete bundling or complete unbundling of contexts.
Note that storage 902, first valuation determiner 904, second valuation determiner 906, context subset determiner 908, first calculator 910, ordering module 912, second calculator 914, first summer 916, second summer 918, third summer 920, and bundling summer 922 shown in
The embodiments described herein, including systems, methods/processes, and/or apparatuses, may be implemented using well known servers/computers, such as computer 1200 shown in
Computer 1200 can be any commercially available and well known computer capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Sun, HP, Dell, Cray, etc. Computer 1200 may be any type of computer, including a desktop computer, a server, etc.
Computer 1200 includes one or more processors (also called central processing units, or CPUs), such as a processor 1204. Processor 1204 is connected to a communication infrastructure 1202, such as a communication bus. In some embodiments, processor 1204 can simultaneously operate multiple computing threads.
Computer 1200 also includes a primary or main memory 1206, such as random access memory (RAM). Main memory 1206 has stored therein control logic 1228A (computer software), and data.
Computer 1200 also includes one or more secondary storage devices 1210. Secondary storage devices 1210 include, for example, a hard disk drive 1212 and/or a removable storage device or drive 1214, as well as other types of storage devices, such as memory cards and memory sticks. For instance, computer 1200 may include an industry standard interface, such a universal serial bus (USB) interface for interfacing with devices such as a memory stick. Removable storage drive 1214 represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
Removable storage drive 1214 interacts with a removable storage unit 1216. Removable storage unit 1216 includes a computer useable or readable storage medium 1224 having stored therein computer software 1228B (control logic) and/or data. Removable storage unit 1216 represents a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device. Removable storage drive 1214 reads from and/or writes to removable storage unit 1216 in a well known manner.
Computer 1200 also includes input/output/display devices 1222, such as monitors, keyboards, pointing devices, etc.
Computer 1200 further includes a communication or network interface 1218. Communication interface 1218 enables the computer 1200 to communicate with remote devices. For example, communication interface 1218 allows computer 1200 to communicate over communication networks or mediums 1242 (representing a form of a computer useable or readable medium), such as LANs, WANs, the Internet, etc. Network interface 1218 may interface with remote sites or networks via wired or wireless connections.
Control logic 1228C may be transmitted to and from computer 1200 via the communication medium 1242.
Any apparatus or manufacture comprising a computer useable or readable medium having control logic (software) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer 1200, main memory 1206, secondary storage devices 1210, and removable storage unit 1216. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent embodiments of the invention.
The invention can work with software, hardware, and/or operating system implementations other than those described herein. Any software, hardware, and operating system implementations suitable for performing the functions described herein can be used.
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art that various changes in form and detail can be made therein without departing from the spirit and scope of the invention. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.