Patent Publication Number: US-10782864-B1

Title: Two-axis slider graphical user interface system and method

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of and claims priority under 35 U.S.C. § 120 to U.S. patent application Ser. No. 14/245,822, filed on Apr. 4, 2014, entitled “Advertisement Campaign Target Selection Engine”, by Ryan K. Hannebaum, et al., which is incorporated herein by reference in its entirety for all purposes. 
    
    
     STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
     Not applicable. 
     REFERENCE TO A MICROFICHE APPENDIX 
     Not applicable. 
     BACKGROUND 
     Advertising content may be presented to users of mobile communication devices when the users employ functions of the device such as internet access, gaming, or other sponsored applications. Devices capable of displaying this sort of advertising content may include mobile phones, portable digital assistants, tablets, and laptop and desktop computers. The advertising content may include videos, still images, text, html, rich media, and/or links to offers or discounts at a particular vendor, or to a chain or subsidiary of a particular vendor. The advertisements may vary based on the type and size of the advertisement that can be inserted into the content. Selecting specific users to be sent advertisements based on the characteristics of those users, for example the age of the users or the income level of the users may be referred to as targeting users and the advertisements sent to those selected users may be referred to as targeted ads. Advertisements may be sent to a user or target based on demographic or behavioral information about the user, and advertisements may be sent to targets as a part of an advertisement campaign. A target for an advertisement campaign may be selected from a group of people based on an increased probability that the target will respond to the advertisement campaign. 
     SUMMARY 
     In an embodiment, a method for selecting targets for an advertisement campaign is disclosed. The method comprises: adjusting a first axis that controls a first target selection method; adjusting a second axis that controls a second target selection method; filtering potential targets based on the adjustments by an application executed by a computer system; ranking potential targets based on the adjustments by an application executed by a computer system; selecting at least a portion of the potential targets based on the results of filtering and ranking; and sending one or more advertisements to the selected targets, wherein a target for an advertisement campaign may be selected from a group of people based on an increased probability that the target will respond to the advertisement campaign; the first target selection method adjusts selecting targets between demographics and behavior; the second target selection method adjusts selecting targets between filtering and ranking; and the first and second axes may be shown on and controlled via a user interface. 
     In an embodiment, a method for choosing targets for an advertisement campaign is disclosed. The method comprises: adjusting a first axis that controls a first selection method; receiving feedback based on the adjustments; filtering potential targets based on the adjustment; ranking potential targets based on the adjustment; selecting at least a portion of the potential targets based on the results of filtering and ranking; and sending advertisements to the selected targets, wherein the first axis may be shown on and controlled via a user interface, and the feedback is shown on the user interface with the first axis. 
     In an embodiment, a computer system is disclosed. The computer system comprises: a processor; a memory; an application stored in the memory that, when executed by the processor, receives instructions for analyzing a group of potential targets, wherein at least a portion of the instructions comprises a slider control input, and a pre-defined number of targets; determines a selection method for selecting potential targets based on the received instructions; accesses database information for the potential targets, wherein database information comprises demographic information and behavioral information; analyzes the group of potential targets based on the received instructions as well as the database information; and selects the pre-defined number of targets for the advertisement campaign based on the selection method and analysis, wherein: the slider control input is adjustable, and the application adapts the selection method based on the adjustments. 
     These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts. 
         FIG. 1  is an illustration of a communication system according to an embodiment of the disclosure; 
         FIG. 2  illustrates an embodiment of sliders which may be incorporated into a user interface; 
         FIG. 3  illustrates another embodiment of sliders which may be incorporated into a user interface; 
         FIG. 4  is a flow chart illustrating a method according to an embodiment of the disclosure; 
         FIG. 5  is a flow chart illustrating another method according to an embodiment of the disclosure; and 
         FIG. 6  illustrates an exemplary computer system suitable for implementing the several embodiments of the disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     It should be understood at the outset that although illustrative implementations of one or more embodiments are illustrated below, the disclosed systems and methods may be implemented using any number of techniques, whether currently known or not yet in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, but may be modified within the scope of the appended claims along with their full scope of equivalents. 
     Embodiments of the disclosure are directed to methods and systems for selecting targets for an advertisement campaign. As used herein, the term target may mean an individual who is selected for sending an advertisement to, for example a subscriber having a known profile selected for sending an advertisement to about a new car. A wireless communication service provider may have tens of millions of subscribers, each one being a potential target. The present disclosure teaches, among other things, how to select targets from a large population of potential targets, for example from among tens of millions of wireless communication service subscribers. 
     A target for an advertisement campaign may be selected from a group of people based on a calculation that the target has an increased probability (e.g., an above average probability relative to an undifferentiated pool of potential targets, for example tens of millions of subscribers) that the target will respond to the advertisement campaign. The calculation of this probability may be based on the demographic and/or behavioral information about the target. For example, an individual with an annual income greater than $70,000 in the age bracket 35 to 55 may be calculated to have an above average probability, relative to an undifferentiated population of individuals (e.g., including other individuals with annual incomes less than $70,000 who are younger than 35 or older than 55), of responding to a car ad for a luxury car. 
     Methods of the disclosure may comprise adjusting one or more slider axis that controls one or more target selection method, wherein the selection method(s) may comprise using target demographic data, target behavioral data, filtering criteria, and/or ranking criteria to select targets for the advertisement campaign. The slider axis may allow a user to adjust particular target selection criteria substantially continuously between a first extreme and a second extreme of the selection criteria dimension. Based on the adjustments, an analysis application executed by a computer system may complete analysis to select a pre-defined number of targets from a group of potential targets for the advertisement campaign. The selected targets may be then sent one or more advertisements associated with the advertisement campaign. 
     In some cases, a work station in communication with the analysis application may comprise a user interface for inputting controls and preferences for the analysis. The user interface may comprise one or more slider control that may be used to input adjustments, where the slider may vary between two extremes along an axis. In some cases, the user interface may comprise a two-dimensional (or two-axis) slider, where a point within the two-dimensional space created by the two axes may be adjusted by the user, and adjusting the one point affects both axes of the slider. In some cases, the user interface may provide feedback for adjustments made using the slider(s), such as historical results for a chosen point on the slider(s). Historical information may comprise results of previous advertisement campaigns using similar criteria. Because historical information may only be available at specific points along a substantially continuous range of slider positions, the feedback provided may extrapolate values between slider positions associated with historical information. Also, potential results (e.g., a projection of results based on an extrapolation of historical information on results of previous advertisement campaigns) for a chosen point may be shown on the user interface, where potential results may include number of targets, type of targets, location of targets, etc. Additionally, other types of controls or criteria may be input via the user interface to be used for the analysis, such as number of targets desired, content of advertisement campaign, demographic criteria, behavioral criteria, etc. All of this information may be used to generate a group of targets to be used for the advertisement campaign. 
     In some embodiments, the slider may control a percentage of targets selected using one or more analysis method. For example, the slider may control the percentage of targets chosen using a filtering method and the percentage of targets chosen using a ranking method, wherein the extremes are 100% from filtering and 100% from ranking. In an exemplary embodiment, the slider may be placed between the two extremes where 60% of the targets are chosen using a filtering method and 40% of the targets are chosen using a ranking method, wherein the total percentage from both methods would add to 100%. 
     In another embodiment, the slider may control the strength of filtering and/or ranking, wherein both methods of analysis may be used to select each of the targets. For example, one extreme of the slider may comprise strong filtering and weak ranking, while the other extreme may comprise strong ranking and weak filtering. In an exemplary embodiment, the strength of the filtering may be based on the number of filters used to select the targets, while in other embodiments, the strength of the filtering may be based on the required adherence to the filters. The strength of the ranking may be based on the algorithms used to analyze the group of potential targets. 
     In yet another embodiment, the slider may control the percentage of targets chosen based on demographic information or behavioral information. Demographic information may comprise age, gender, race, location, income, etc. Behavioral information may comprise search history, purchase history, browsing history, response to previous advertisements, etc. 
     In some embodiments, the first selection method may adjust target selection based on demographic information or behavioral information. In some embodiments, the second selection method may adjust target selection based on filtering or ranking. In some embodiments, the two-axis slider may be controlled by moving a point within the two-dimensional space of the two sliders. In other embodiments, each slider may be controlled independently. In some embodiments, the sliders may be used with other input criteria such as filtering criteria, type of filter(s), ranking criteria, context of advertisement campaign, placement of the advertisement campaign, desired number of targets, etc. 
     Turning now to  FIG. 1 , a communication system  100  is described. The communication system may comprise a computer system  102  comprising one or more analysis applications  108 . The computer system  102  may communicate with a network  131  via a wired or wireless connection. The network  131  may be a private network, a public network, or a combination thereof. The network  131  may promote voice communications and data communications. Portions of the network  131  may provide an IP Multimedia Subsystem (IMS) network. 
     In some embodiments, the computer system  102  may communicate with one or more database to obtain or share information. For example, the computer system  102  may communicate with a target information database  116 , wherein one or more of the analysis applications  108  may receive target information (such as demographic information, behavioral information, etc.) from the target information database  116 . This target information may associate a person and certain attributes of that person with a particular target. In some embodiments, the computer system  102  may access information from multiple databases to perform analysis. In some embodiments, the system  100  may comprise one or more work stations  120  operable to allow users to access and operate the computer system  102 , applications  108  and database(s)  116 . For example, a salesman may access the system  100  via a workstation  120  to select a group of targets for an advertisement campaign based on the information generated by the analysis application  108 . 
     In some embodiments, the analysis application  108  may be operable to analyze the information stored in and/or obtained from the database(s)  116 . For example, the analysis app  108  may be operable to select a set of targets for a particular advertisement campaign based on the information in the database(s)  116 , such as demographic data, behavioral data, etc. In some embodiments, an advertisement campaign may be managed and distributed by an ad campaign gateway  118  in communication with the computer system  102 . Additionally, the analysis application  108  may be operable to perform multiple kinds of analysis on the same group of targets and/or different groups of targets, such as filtering targets and ranking targets for example. In some embodiments, the analysis performed by the analysis application  108  may be controlled or directed by inputs from the work stations  120 . For example, a user may input controls via the work station  120  that are then communicated to the computer system  102  and used by the analysis application  108  to produce a list or report of targets. The targets may be chosen based on the controls input via the work station  120 . In some embodiments, the controls may comprise preference between using behavioral data, demographic data, filtering, and/or ranking, as well as the strength and type of filtering and/or ranking. 
     In some embodiments, filtering may be accomplished by using multiple filters to select targets from a larger group. Ranking may be accomplished by using an algorithm to analyze the targets based on certain criteria. For example, targets may be ranked based on how closely they fit certain criteria input by the user, such as age, income, location, etc. In another example, past behavioral information, such as browsing information, purchase information, etc. may be used to rank targets based on how likely they are to respond to an advertisement. In other embodiments, multiple criteria may be weighted and a total of the weight may be used to rank targets. For example, it may be more important that a target is within a certain age range than that they live or work in a certain location, so the age criteria may be weighted heavier than the location criteria. 
     In some embodiments, a user may interact with the work station  120  via a user interface  122 . The user interface  122  may provide one or more options for inputting controls or preferences for selecting targets for an advertisement campaign. In some embodiments, the user interface  122  may comprise a slider that is variable between two extremes, wherein the slider may be moved to any point between the two extremes or at one of the extremes. In some embodiments, the slider may be moved substantially continuously between the two extremes. In other embodiments, the slider may be moved to one of approximately 100 points between the two extremes. In still other embodiments, the slider may be moved to one of approximately 1000 points between the extremes. Any number of points may be envisioned to exist between the two extremes of the slider(s), wherein the number may range from one to substantially infinite. 
     In some embodiments, the user interface  122  may comprise multiple sliders, two-dimensional (or two-axis) sliders, or other control methods.  FIG. 2  illustrates an exemplary one-dimensional slider  200 , wherein the slider  200  comprises an axis  202 , an adjustor  204 , a first extreme  206 , and a second extreme  208 . The adjustor  204  may be moved along the axis  202  between the two extremes  206  and  208 . In some embodiments, multiple sliders  200  may be used to control the selection of targets. 
     In some embodiments, a two-axis slider may be used, wherein each axis may comprise different control options. For example, a first axis may control a first selection (or analysis) method and a second axis may control a second selection (or analysis) method. As shown in  FIG. 3 , a two-axis slider  210  may comprise a first axis  212  and a second axis  214 , wherein the first axis  212  has a first extreme  216  and a second extreme  218 , and the second axis  214  has a first extreme  220  and a second extreme  222 . The adjustor  204  may move with the two-dimensional space created by the two axes  212  and  214 , as indicated by the arrows. 
     In some embodiments, the user interface  122  may provide feedback to the user during the adjustment of the slider(s). For example, historical information or results may be displayed when a certain point on the slider(s) is chosen. Historical information may comprise results of previous advertisement campaigns using similar criteria. Additionally, potential results of the chosen point may be shown on the user interface  122 . Potential results may include number of targets, type of targets, location of targets, etc. For example, if a particular point is chosen, the number of targets that may be selected using those criteria may be shown to the user, wherein the user may adjust the point on the slider based on the number of targets desired. In some embodiments, feedback may include pricing or cost of the chosen option, and may be shown on the user interface  122 , wherein the slider(s) may offer a range of cost options. 
     In some embodiments, the user interface  122  may show dynamic feedback based on pre-loaded data accessed by the computer system  102 . In some embodiments, the pre-loaded data may comprise a selection or portion of the actual targets to be analyzed by the analysis application  108  based on the input from the user via the user interface  122 . Pre-loaded data may comprise a randomly chosen selection of targets (and the information associated with those targets) from the larger group of potential targets to be analyzed. For example, if a certain point on the slider(s) is chosen, the pre-loaded data may be immediately analyzed based on the choice and the result may be shown on the user interface  122 . This may provide the user with an estimation of the final results using a particular set of controls and criteria. In some embodiments, the feedback provided to the user may be used to improve or adjust the filters or ranking criteria used to select the targets, wherein a user may have control over the filters used. For example, if the feedback shows that using a particular filter may limit the selected targets to a number less than the desired number of targets, the user may be able to adjust (or remove) that filter to achieve the desired results. In some embodiments, this adjustment may be made by moving the slider(s). 
     In some embodiments, the analysis application(s)  108  may comprise multiple methods or techniques for using both filtering and ranking to determine the group of selected targets for the advertisement campaign. These methods may be controlled and/or selected via the user interface  122 . For example, the group of potential targets may be first filtered using filters input by the user via the work station  120  and then may be ranked using the analysis application  108  based on criteria that may input by the user and/or known by the analysis application  108 . In this case, the user may ask for 5000 targets for the advertisement campaign. The group of potential targets may be filtered based on filters input by the user, wherein the analysis application may select an excess of 5000, such as 10,000, targets from the filters, and wherein all targets match on every filter. The filtered targets may then be ranked by the analysis application  108 , and the “top” 5000 targets may be selected for the advertisement campaign. 
     In another example, the group of potential targets may first be ranked using the analysis application  108  based on criteria that may be input by the user and/or known by the analysis application  108 , and then filtered using filters input by the user via the work station  120 . For example, the group of potential targets may be ranked to determine which of the filters are the most important in selecting targets. Then, the “top” 5000 targets that match the filters may be selected for the advertisement campaign. In another example, filtering and ranking may be used concurrently, wherein a percentage of the targets may be selected using the filters and a percentage of the targets may be selected using ranking. Alternatively, filtering and ranking may be used concurrently, wherein the strength of the filter(s) and strength of the ranking may be chosen using the work station  120 . 
     In some cases, the analysis application  108  may be operable to use more than one method to select targets. For example, the user may request 10000 targets, and the user may input at least two methods of selection via the work station  120 . As an example, the analysis application  108  may begin to select half of the targets using the first method and half of the targets using the section method. At any time during the selection process, such as when 2000 targets have been selected, for example, the user may review the results then have the option to adjust the weight of each of the at least two selection methods. In some embodiments, a user may review the results and see that one method is producing better results than a second method, and may choose to select the remainder of the targets using the better method. In some embodiments, more than two methods may be used initially, wherein the user may view the results of all the methods used to select the best method(s) for the selection of targets. Additionally, the analysis application(s)  108  may be operable to automatically select the best method out of multiple selection methods, wherein the user may not need to review the results. For example, the analysis application  108  may be programmed to select a portion of the targets using multiple methods, compare the results of the multiple methods, and then select one (or more) best method to complete the selection of targets. As used herein, “best method” means for the specific ad campaign and/or circumstances. For a different ad campaign or circumstances, a different method may be “best.” Additionally, a combination of automatic and manual control may be used. 
     In some embodiments, a user may have control over the strength of the input filters that are used to select the targets. For example, a user may have the option of adjusting how many of the input filters must be matched for a target to be selected. As an example, a user may have input 10 filters to be matched, and the adjustments may range between requiring all 10 filters to be matched to requiring none of the filters to be matched, wherein any number between 0 and 10 may be selected. The user may be able to view the results of adjusting the filters via the user interface  122 . Additionally, the user may have the option of adjusting the degree to which a target must match a filter. In other words, a user may be able to broaden the filters used for selection. For example, one filter may comprise the targets income range, wherein the original filter may be $30,000 to $40,000. The user may then broaden this filter to different degrees, such as $25,000 to $45,000, or $20,000 to $70,000, etc. The user interface  122  may provide feedback in response to these adjustments, such that a user may view the effect of changing the filtering requirements on the selection of the targets. In some embodiments, the methods listed above may be used in any combination to optimize the selection of targets for one or more advertisement campaign. 
     In some embodiments, similar concepts may be used when scheduling multiple advertisement campaigns for multiple users that may access the same group of targets. For example, one target may be selected for multiple advertisement campaigns using one or more of the methods described above. However, rules or policies concerning delivery of ads to a target may prevent the target from being used in all of the campaigns it has been chosen for. In this case, multiple factors may be used to determine which campaign(s) may be sent to a target and when the campaigns may be sent to the target, wherein the factors may be weighted by importance. These factors may include the business rules and policies for sending advertisements, the duration and date of completion for each of the campaigns, selecting matches that may be good enough if not the best, dividing up the targets across all campaigns, where the customer is ranked for each of the campaigns, the delivery method of the advertisements (SMS, banner ad, email, offer, etc.) for each campaign, prioritizing rates of click-through, prioritizing based on campaign revenue, and maximizing the best return-on-investment for each of the campaigns. Multiple advertisement campaigns may be optimized based on these factors. 
     Turning now to  FIG. 4 , a method  300  for selecting targets for an advertisement campaign is described. At step  302 , a first axis may be adjusted, wherein the first axis controls a first target selection method. At step  304 , a second axis may be adjusted, wherein the second axis controls a second target selection method. In some embodiments, a target for an advertisement campaign may be selected from a group of people based on an increased probability that the target will respond to the advertisement campaign. In some embodiments, the first and second axes may be shown on and controlled via a user interface. In some embodiments, the first selection method adjusts selecting targets between demographics and behavior. In some embodiments, the second selection method adjusts selecting targets between filtering and ranking. At step  306 , potential targets may be filtered based on the adjustments made in steps  302  and  304  by an application executed by a computer system. At step  308 , potential targets may be ranked based on the adjustments made in steps  302  and  304  by an application executed by a computer system. In some embodiments, the filtered potential targets and the ranked potential targets are the same group of potential targets. In some embodiments, the filtered potential targets and the ranked potential targets are different groups of potential targets. At step  310 , at least a portion of the potential targets may be selected based on the results of the filtering and ranking. In some embodiments, selecting at least a portion of the potential targets comprises selecting a pre-defined number of targets input by the user. At step  312 , one or more advertisement may be sent to the selected targets. In some embodiments, the cost to the advertiser or marketer of completing the method is variable based on the selection methods. In some embodiments, the cost variations are shown on the user interface and change with adjustments of the axes. In some embodiments, the historical results of previous advertisement campaigns for a particular adjustment are shown on the user interface. In some embodiments, the user interface shows dynamic responses to adjustments based on effects on pre-loaded target information. 
     Turning now to  FIG. 5 , a method  320  for choosing targets for an advertisement campaign is described. At step  322 , a first axis may be adjusted, wherein the first axis controls a first target selection method. In some embodiments, the method  320  may further comprise adjusting a second axis that controls a second target selection method, wherein the filtering and ranking may be affected by both adjustments. At step  324 , feedback may be received based on the adjustments. In some embodiments, the feedback comprising information about the possible target selection, including number of targets, type of targets, location of targets, etc. At step  326 , potential targets may be filtered based on the adjustments made in step  322 . At step  328 , potential targets may be ranked based on the adjustments made in step  322 . At step  330 , at least a portion of the potential targets may be selected based on the results of the filtering and ranking. At step  332 , one or more advertisement may be sent to the selected targets. In some embodiments, the first axis may be shown on and controlled via a user interface, and the feedback may be shown on the user interface with the first axis. In some embodiments, the targets may be filtered and ranked based on demographic information. In some embodiments, the targets may be filtered and ranked based on behavioral information. In some embodiments, behavioral information may comprise search history, purchase history, browsing history, response to previous advertisements, etc. In other embodiments, a combination of demographic and behavioral information may be used. 
     In some embodiments, the method  320  may further comprise adjusting the first axis further based on the received feedback. In some embodiments, adjusting the first axis may comprise adjusting a percentage of targets chosen based on filtering, wherein the remaining percentage of targets is chosen based on ranking. In some embodiments, adjusting the first axis may comprise adjusting the strength of the filtering and ranking, wherein one extreme comprises strong filtering and weak ranking and the other extreme comprises strong ranking and weak filtering. In some embodiments, the strength of the filtering or ranking may be adjusted by adding and/or taking away filters or ranking criteria. In other embodiments, the filtering and ranking may also be adjusted by selecting the order in which they are completed. For example, the potential targets may be filtered first and then ranked, or they may be ranked first and then filtered. In some embodiments, filters and/or ranking criteria may be manually chosen by a user. 
       FIG. 6  illustrates a computer system  700  suitable for implementing one or more embodiments disclosed herein. The computer system  700  includes a processor  702  (which may be referred to as a central processor unit or CPU) that is in communication with memory devices including secondary storage  704 , read only memory (ROM)  706 , random access memory (RAM)  708 , input/output (I/O) devices  710 , and network connectivity devices  712 . The processor  702  may be implemented as one or more CPU chips. 
     It is understood that by programming and/or loading executable instructions onto the computer system  700 , at least one of the CPU  702 , the RAM  708 , and the ROM  706  are changed, transforming the computer system  700  in part into a particular machine or apparatus having the novel functionality taught by the present disclosure. It is fundamental to the electrical engineering and software engineering arts that functionality that can be implemented by loading executable software into a computer can be converted to a hardware implementation by well-known design rules. Decisions between implementing a concept in software versus hardware typically hinge on considerations of stability of the design and numbers of units to be produced rather than any issues involved in translating from the software domain to the hardware domain. Generally, a design that is still subject to frequent change may be preferred to be implemented in software, because re-spinning a hardware implementation is more expensive than re-spinning a software design. Generally, a design that is stable that will be produced in large volume may be preferred to be implemented in hardware, for example in an application specific integrated circuit (ASIC), because for large production runs the hardware implementation may be less expensive than the software implementation. Often a design may be developed and tested in a software form and later transformed, by well-known design rules, to an equivalent hardware implementation in an application specific integrated circuit that hardwires the instructions of the software. In the same manner as a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been programmed and/or loaded with executable instructions may be viewed as a particular machine or apparatus. 
     The secondary storage  704  is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if RAM  708  is not large enough to hold all working data. Secondary storage  704  may be used to store programs which are loaded into RAM  708  when such programs are selected for execution. The ROM  706  is used to store instructions and perhaps data which are read during program execution. ROM  706  is a non-volatile memory device which typically has a small memory capacity relative to the larger memory capacity of secondary storage  704 . The RAM  708  is used to store volatile data and perhaps to store instructions. Access to both ROM  706  and RAM  708  is typically faster than to secondary storage  704 . The secondary storage  704 , the RAM  708 , and/or the ROM  706  may be referred to in some contexts as computer readable storage media and/or non-transitory computer readable media. 
     I/O devices  710  may include printers, video monitors, liquid crystal displays (LCDs), touch screen displays, keyboards, keypads, switches, dials, mice, track balls, voice recognizers, card readers, paper tape readers, or other well-known input devices. 
     The network connectivity devices  712  may take the form of modems, modem banks, Ethernet cards, universal serial bus (USB) interface cards, serial interfaces, token ring cards, fiber distributed data interface (FDDI) cards, wireless local area network (WLAN) cards, radio transceiver cards such as code division multiple access (CDMA), global system for mobile communications (GSM), long-term evolution (LTE), worldwide interoperability for microwave access (WiMAX), and/or other air interface protocol radio transceiver cards, and other well-known network devices. These network connectivity devices  712  may enable the processor  702  to communicate with the Internet or one or more intranets. With such a network connection, it is contemplated that the processor  702  might receive information from the network, or might output information to the network in the course of performing the above-described method steps. Such information, which is often represented as a sequence of instructions to be executed using processor  702 , may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave. 
     Such information, which may include data or instructions to be executed using processor  702  for example, may be received from and outputted to the network, for example, in the form of a computer data baseband signal or signal embodied in a carrier wave. The baseband signal or signal embedded in the carrier wave, or other types of signals currently used or hereafter developed, may be generated according to several methods well known to one skilled in the art. The baseband signal and/or signal embedded in the carrier wave may be referred to in some contexts as a transitory signal. 
     The processor  702  executes instructions, codes, computer programs, scripts which it accesses from hard disk, floppy disk, optical disk (these various disk based systems may all be considered secondary storage  704 ), ROM  706 , RAM  708 , or the network connectivity devices  712 . While only one processor  702  is shown, multiple processors may be present. Thus, while instructions may be discussed as executed by a processor, the instructions may be executed simultaneously, serially, or otherwise executed by one or multiple processors. Instructions, codes, computer programs, scripts, and/or data that may be accessed from the secondary storage  704 , for example, hard drives, floppy disks, optical disks, and/or other device, the ROM  706 , and/or the RAM  708  may be referred to in some contexts as non-transitory instructions and/or non-transitory information. 
     In an embodiment, the computer system  700  may comprise two or more computers in communication with each other that collaborate to perform a task. For example, but not by way of limitation, an application may be partitioned in such a way as to permit concurrent and/or parallel processing of the instructions of the application. Alternatively, the data processed by the application may be partitioned in such a way as to permit concurrent and/or parallel processing of different portions of a data set by the two or more computers. In an embodiment, virtualization software may be employed by the computer system  700  to provide the functionality of a number of servers that is not directly bound to the number of computers in the computer system  700 . For example, virtualization software may provide twenty virtual servers on four physical computers. In an embodiment, the functionality disclosed above may be provided by executing the application and/or applications in a cloud computing environment. Cloud computing may comprise providing computing services via a network connection using dynamically scalable computing resources. Cloud computing may be supported, at least in part, by virtualization software. A cloud computing environment may be established by an enterprise and/or may be hired on an as-needed basis from a third party provider. Some cloud computing environments may comprise cloud computing resources owned and operated by the enterprise as well as cloud computing resources hired and/or leased from a third party provider. 
     In an embodiment, some or all of the functionality disclosed above may be provided as a computer program product. The computer program product may comprise one or more computer readable storage medium having computer usable program code embodied therein to implement the functionality disclosed above. The computer program product may comprise data structures, executable instructions, and other computer usable program code. The computer program product may be embodied in removable computer storage media and/or non-removable computer storage media. The removable computer readable storage medium may comprise, without limitation, a paper tape, a magnetic tape, magnetic disk, an optical disk, a solid state memory chip, for example analog magnetic tape, compact disk read only memory (CD-ROM) disks, floppy disks, jump drives, digital cards, multimedia cards, and others. The computer program product may be suitable for loading, by the computer system  700 , at least portions of the contents of the computer program product to the secondary storage  704 , to the ROM  706 , to the RAM  708 , and/or to other non-volatile memory and volatile memory of the computer system  700 . The processor  702  may process the executable instructions and/or data structures in part by directly accessing the computer program product, for example by reading from a CD-ROM disk inserted into a disk drive peripheral of the computer system  700 . Alternatively, the processor  702  may process the executable instructions and/or data structures by remotely accessing the computer program product, for example by downloading the executable instructions and/or data structures from a remote server through the network connectivity devices  712 . The computer program product may comprise instructions that promote the loading and/or copying of data, data structures, files, and/or executable instructions to the secondary storage  704 , to the ROM  706 , to the RAM  708 , and/or to other non-volatile memory and volatile memory of the computer system  700 . 
     In some contexts, the secondary storage  704 , the ROM  706 , and the RAM  708  may be referred to as a non-transitory computer readable medium or a computer readable storage media. A dynamic RAM embodiment of the RAM  708 , likewise, may be referred to as a non-transitory computer readable medium in that while the dynamic RAM receives electrical power and is operated in accordance with its design, for example during a period of time during which the computer system  700  is turned on and operational, the dynamic RAM stores information that is written to it. Similarly, the processor  702  may comprise an internal RAM, an internal ROM, a cache memory, and/or other internal non-transitory storage blocks, sections, or components that may be referred to in some contexts as non-transitory computer readable media or computer readable storage media. 
     While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods may be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted or not implemented. 
     Also, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component, whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.