Abstract:
A system and method for searching travel services. A server computer receives a travel request from a client device operated by a user. The server computer identifies travel options according to the travel request. The server computer classifies the travel options into predefined groups, the classifying based on at least one of past transactions, input from domain experts, input from semantic analysts, analytics data, user preferences, and company policies. The server computer presents the options via presentation of the predefined groups.

Description:
RELATED APPLICATIONS 
       [0001]    The present application is a continuation application of U.S. patent application Ser. No. 13/476,900, filed May 21, 2012 and entitled “TRAVEL SERVICES SEARCH”, which claims the benefit of the filing date of U.S. Provisional Patent Application No. 61/488,567 filed on May 20, 2011 and entitled “Personalized Flight Search/Smart Flight Search”, the entire disclosures of which applications are hereby incorporated herein by reference. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present disclosure relates to traveling, and more specifically to searching for flights, hotels, and other travel services. 
       BACKGROUND OF THE INVENTION 
       [0003]    Searching for flights, hotels, and other travel services is highly cumbersome today. The process inherently involves making a series of complicated decisions and tradeoffs and most tools today simply offload that burden entirely to the user. Tools today do not enable a user to trade-off between traveling attributes. 
         [0004]    BRIEF SUMMARY OF THE INVENTION 
         [0005]    Additionally, tools that provide recommendations relating to travel services to users are not personalized to the user. 
         [0006]    In one aspect, a server computer receives a travel request from a client device operated by a user. The server computer identifies travel options according to the travel request. The server computer classifies the travel options into predefined groups, the classifying based on at least one of past transactions, input from domain experts, input from semantic analysts, analytics data, user preferences, and company policies. The server computer presents the options via presentation of the predefined groups. 
         [0007]    In one embodiment, the presenting of the options further includes presenting options personalized for the user. In one embodiment, the server computer defines groups, and the defining can be personalized for the user. In one embodiment, the classifying of the travel options into the predefined groups includes defining, by the user, a function to classify an option. In one embodiment, the defining of the function includes defining the function via one or more up/down votes. A first group can be classified, and the classifying can be based on a model function of the first group. The classifying of the first group can be based on attributes associated with the travel options. 
         [0008]    In one embodiment, the server computer determines buckets specifically for the user. In one embodiment, the server computer provides, to the client device, the plurality of buckets as recommendations for the user based on the travel request. The determining of the buckets can include determining buckets that are personalized to a user&#39;s search behavior and/or based on the user&#39;s social connections. 
         [0009]    These and other aspects and embodiments will be apparent to those of ordinary skill in the art by reference to the following detailed description and the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    In the drawing figures, which are not to scale, and where like reference numerals indicate like elements throughout the several views: 
           [0011]      FIG. 1  is a user interface associated with a web site existing in the prior art; 
           [0012]      FIG. 2  is another user interface associated with a web site existing in the prior art; 
           [0013]      FIG. 3  is a block diagram illustrating a server computer in communication with a client computer over a network in accordance with an embodiment of the present disclosure; 
           [0014]      FIG. 4  is a system architecture to provide personalized recommendations to a user in accordance with an embodiment of the present disclosure; 
           [0015]      FIG. 5  is a flowchart illustrating operations performed by the server computer to provide recommendations to a user in accordance with an embodiment of the present disclosure; 
           [0016]      FIG. 6  is a user interface provided by the server computer that displays personalized recommendations to a user in accordance with an embodiment of the present disclosure; 
           [0017]      FIG. 7  is a schematic diagram illustrating a client device in accordance with an embodiment of the present disclosure; and 
           [0018]      FIG. 8  is a block diagram of an internal architecture of a computing device in accordance with an embodiment of the present disclosure. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0019]    Embodiments are now discussed in more detail referring to the drawings that accompany the present application. In the accompanying drawings, like and/or corresponding elements are referred to by like reference numbers. 
         [0020]    Various embodiments are disclosed herein; however, it is to be understood that the disclosed embodiments are merely illustrative of the disclosure that can be embodied in various forms. In addition, each of the examples given in connection with the various embodiments is intended to be illustrative, and not restrictive. Further, the figures are not necessarily to scale, some features may be exaggerated to show details of particular components (and any size, material and similar details shown in the figures are intended to be illustrative and not restrictive). Therefore, specific structural and functional details disclosed herein are not to be interpreted as limiting, but merely as a representative basis for teaching one skilled in the art to variously employ the disclosed embodiments. 
         [0021]    The present disclosure is described below with reference to block diagrams and operational illustrations of methods and devices. It is understood that each block of the block diagrams or operational illustrations, and combinations of blocks in the block diagrams or operational illustrations, can be implemented by means of analog or digital hardware and computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer, special purpose computer, ASIC, or other programmable data processing apparatus, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, implements the functions/acts specified in the block diagrams or operational block or blocks. 
         [0022]    In some alternate implementations, the functions/acts noted in the blocks can occur out of the order noted in the operational illustrations. For example, two blocks shown in succession can in fact be executed substantially concurrently or the blocks can sometimes be executed in the reverse order, depending upon the functionality/acts involved. Furthermore, the embodiments of methods presented and described as flowcharts in this disclosure are provided by way of example in order to provide a more complete understanding of the technology. The disclosed methods are not limited to the operations and logical flow presented herein. Alternative embodiments are contemplated in which the order of the various operations is altered and in which sub-operations described as being part of a larger operation are performed independently. 
         [0023]    Throughout the specification and claims, terms may have nuanced meanings suggested or implied in context beyond an explicitly stated meaning. Likewise, the phrase “in one embodiment” as used herein does not necessarily refer to the same embodiment and the phrase “in another embodiment” as used herein does not necessarily refer to a different embodiment. It is intended, for example, that claimed subject matter include combinations of example embodiments in whole or in part. 
         [0024]    In general, terminology may be understood at least in part from usage in context. Fore example, terms, such as “and”, “or”, or “and/or,” as used herein may include a variety of meanings that may depend at least in part upon the context in which such terms are used. Typically, “or” if used to associate a list, such as A, B, or C, is intended to mean A, B, and C, here used in the inclusive sense, as well as A, B, or C, here used in the exclusive sense. In addition, the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense. Similarly, terms, such as “a,” “an,” or “the,” again, may be understood to convey a singular usage or to convey a plural usage, depending at least in part upon context. In addition, the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context. 
         [0025]      FIG. 1  is an example of a user interface  100  associated with a web site (mobisimmo.com) existing in the prior art. The user interface  100  includes a first recommendation  105  and a second recommendation  110 . The first recommendation  105  is a recommendation of a lowest fare available for alternate dates of a flight. The second recommendation  110  is a recommendation of the cheapest non-stop flight. The recommendations  105 ,  110  do not allow the user to trade-off between any two travel attributes (such as flight time and flight price). Further, the recommendations  105 ,  110  do not take into account user preferences. 
         [0026]      FIG. 2  is another example of a user interface  200  associated with a web site (hipmunk.com) existing in the prior art. The user interface  200  introduces an Agony score to help users rank flights. The criteria used to build the Agony store is time, duration, and number of stops of the flight solution. The user interface  200  does not, however, attempt to provide recommendations. Further, the user interface  200  does not attempt to personalize any recommendations to the user. 
         [0027]      FIG. 3  is a block diagram of an embodiment of a client computer  305  (also referred to as a client device  305 ) communicating with a server computer  310  over a network  315  such as the Internet. A user uses a web browser  320  on the client computer  305  to access the Internet. In one embodiment, server computer  310  transmits a web page  325  via the network  315  to the client computer  305  for display by the web browser  320  in a web page  330 . 
         [0028]    For purposes of this disclosure, a computer such as the client computer  305  includes a processor and memory for storing and executing program code, data and software. Computers can be provided with operating systems that allow the execution of software applications in order to manipulate data. Client computer  305  can be any device that can display a website and that can be used by a user. Personal computers, servers, personal digital assistants (PDAs), wireless devices, smartphones, cellular telephones, tablet computers, internet appliances, media players, home theater systems, and media centers are several non-limiting examples of computers. 
         [0029]    For the purposes of this disclosure, the term “server” should be understood to refer to a service point which provides processing, database, and communication facilities. By way of example, and not limitation, the term “server” can refer to a single, physical processor with associated communications and data storage and database facilities, or it can refer to a networked or clustered complex of processors and associated network and storage devices, as well as operating software and one or more database systems and applications software which support the services provided by the server. A number of program modules and data files can be stored on a computer readable medium of the server. They can include an operating system suitable for controlling the operation of a networked server computer, such as the WINDOWS  7 , WINDOWS VISTA, or WINDOWS XP operating system published by Microsoft Corporation of Redmond, Wash., or the Ubuntu operating system distributed by Canonical Ltd. of Douglas, Isle of Man. In one embodiment, the server computer  310  is a group of servers (e.g., a server farm). 
         [0030]    In one embodiment, the user of the client device  305  logs into the web page  330 . The user submits travel criteria  340  in the web page  330 , such as the dates and times of flights that the user would like to be on, a hotel that the user would like to stay at, price range that the user would like to pay for the flight or hotel, and/or any other travel criteria associated with a user&#39;s trip. In one embodiment, the client device  305  transmits this user travel criteria  340  to the server computer  310 . As described in more detail below, the server computer  310  analyzes the user travel criteria  340  in light of data received from multiple sources (e.g., user reviews, past transaction history of the user on the site, data from other sites about a particular traveling service, etc.) to determine one or more personalized recommendations for the user. The server computer  310  transmits the travel recommendations  350  to the client device  305 . The client device  305  displays the personalized travel recommendations  350  to the user, such as a first personalized recommendation  355  and a second personalized recommendation  360 . 
         [0031]    Although described as the server computer  310  performing the processing, in another embodiment the client computer  305  performs some or all of the processing to determine the personalized travel recommendations  350  to the user. Further, although the description below uses a flight as the travel, any type of travel service can be used in the system, such as hotel reservations and/or hotel amenities. 
         [0032]      FIG. 4  shows an embodiment of a system architecture  400  to provide personalized recommendations to a user. In one embodiment, the client computer  305  performs the processing shown in  FIG. 4 . In another embodiment, the server computer  310  performs the processing shown in  FIG. 4 . In yet another embodiment, the client computer  305  performs some of the processing shown in  FIG. 4  and the server computer  310  performs some of the processing shown in  FIG. 4 . 
         [0033]    A user  405  submits a travel search  410  to the web page  330 . The system  400  receives the travel search  410  and determines a package context  415  for the travel search. The system  400  performs search context analysis  417  to determine the package context  415 . As described in more detail below, the package context  415  can include, for example, a combination of the user&#39;s query, user&#39;s past transaction history, his personal preferences and/or any other relevant environmental context. Next, a bucket selection  420  occurs to determine which specific buckets to include in the recommendation for the user. In one embodiment, the bucket selection  420  communicates with a bucket orchestration module  423 . The bucket orchestration module  423  is used to perform the bucket selection  420 . The data is then transmitted to the recommendation user experience (UX) module  425 . A transaction  430  is then generated. The package context  415 , bucket selection  420 , recommendation user experience module  425  data, and transaction data is transmitted to an analytics module  440  for analysis. 
         [0034]    The data from the analytics module  440  is transmitted to a bucket configuration module  450 . The bucket configuration module  450  receives input from semantic analysts and/or domain experts  455  to determine a bucket algorithm  460  and a bucket context  465 . The bucket orchestration module  423  is configured or trained via the adjusting of the bucket configuration  450 . The semantic analysts and/or domain experts  455  can be one or more people or one or more machines. In one embodiment, the bucket configuration module  450  receives past transaction analysis  470 . In one embodiment, the bucket configuration  450  is based on past transaction analysis  470  and the analytics of the data recording operations  415 ,  420 ,  425 , and  430  (current operations as a feedback to the system to fine tune the bucket configuration for future “bucketing”. 
         [0035]    A bucket/recommendation is a predefined characterization of travel options (e.g., “best for productivity”, “company value”, “cheapest”, “fastest”, etc.). Instead of presenting the list of travel options to the user to ask the user to understand the value trade-off among different travel attributes of a travel option (e.g., a flight), the system  400  analyzes the trade-off and assigns the travel options to buckets, each having a name (e.g., “best for productivity”) that indicates the value trade-off made in the bucket. For example, if the user is interested in “best for productivity”, in one embodiment there is no need to look at the travel options placed in other buckets. Each bucket may be presented with certain characteristics of the options in the respective buckets, such as the lowest price of the options in the bucket. Each bucket may have only one top option, representing the recommended option for the optimization goal suggested by the name of the respective bucket. The server may classify all search results into the buckets, or only the top candidates for each of the buckets (and thus filtering out other results). 
         [0036]    To seed the system  400 , in one embodiment a set of domain experts and/or semantic analysts  455  define a set of buckets. Each bucket is modeled as a function over a set of travel attributes (e.g., price of flight, duration of flight, stopcount, inflightwifi, aircraft type, user loyalty information, comfort information). In one embodiment, attributes take different weights depending on, for example, the bucket being defined and/or the user for whom the bucket is being defined for. In one embodiment, the attribute weighting is defined by performing a rigorous analysis of past transaction data (e.g., stored in a database in communication with the server computer  310 ). Once again, to seed the system, domain experts and/or semantic analysis influence the weighting. Eventually, new transaction data as well as user engagement data is used to train the system. 
         [0037]    For example, the price of a flight attribute for a flight may be more heavily weighted than the comfort information of a flight for a user who has selected the cheapest flight option in the past and has never selected the comfort option. Thus, in one embodiment a feedback loop exists—data associated with a trip from multiple sources is analyzed, and this data includes user preferences and past actions. This data is then used to provide future recommendations to the user. 
         [0038]    In one embodiment, the process of defining and refining a bucket is a continuous one. The system  400  is an experimentation platform that enables the defining of buckets on the fly and enables the buckets to be surfaced to a select set of users by running an experiment. In one embodiment, the results of the experiment determine the future viability and/or the design of the bucket. Buckets that are defined get added to a pool of available buckets which are available to be offered to the user. 
         [0039]    In one embodiment, each bucket corresponds to a model or function that generates a score (e.g., a score for “best for productivity”) for each travel option, based on flight/travel attributes of each travel option and/or the user preferences, context, history, etc. The score/model/function implemented in the bucket orchestration module ranks the travel options for classification into different buckets. 
         [0040]    In more detail, when a user performs a travel query (e.g., submits a travel search  410 /travel criteria  340 ), in one embodiment user context (a combination of the user&#39;s query, user&#39;s past transaction history, his personal preferences and/or any other relevant environmental context) is packaged by the package context module  415 . A bucket selection  420  occurs and is offered (e.g., transmitted) to bucket orchestration module  423 . The bucket orchestration module  423  uses the context to decide the subset of buckets as well as the order of buckets that should be surfaced (presented) to the user. In one embodiment, to seed the system, a uniform set of buckets is used that are surfaced to all the users. As the system  400  gains experience/confidence, the orchestration module  423  gets more aggressive in making these determinations. 
         [0041]    The system  400  then renders the appropriate set of buckets to the user  405 . In one embodiment, the buckets are presented to the user  405  in increasing order of decision making complexity. For example and as shown in  FIG. 5 , the cheapest bucket  505  is shown before the fastest bucket  510 . This allows the user  405  to immediately understand the premium that he is paying for flying faster. Thus, users can not only abstract away complexities behind these buckets but also can determine the tradeoff between one bucket and another bucket. Furthermore, in one embodiment the system  400  is highly transparent in how the recommendations are made by explaining to the user the dominant attributes that constitute a single bucket. 
         [0042]    A user may interact with the bucket by voting up or down attributes that have been identified as dominant attributes for a particular bucket. By allowing the user  405  to participate in the bucket definition process, the bucket definition will be trained towards the “correct” weights faster than without user participation. This recommendation system  400  is further strengthened by analytics module  440  that collects engagement &amp; transaction data at every stage of the transaction funnel (operations  415 ,  420 ,  425 , and  430 ) and uses that analytics data to influence bucket orchestration and/or the design of the bucket itself 
         [0043]    In one embodiment, a bucket can be defined (e.g., by the user  405 ) that captures a sub-goal in travel solution selection. A bucket can also be defined as a function of one or more attributes, based on analysis of past transactions (e.g., regression analysis), based on semantic knowledge, and/or based on analytical data and user behavior (e.g., on the site and/or on other sites). In one embodiment, analytics influence the fine-tuning of bucket attribute weights. In one embodiment, the experimentation platform enables the system to determine the correct set of buckets for a specific user. The buckets can be personalized to a user&#39;s company policy, personalized to a user&#39;s specific preferences, personalized to a user&#39;s past and present search behavior, and/or personalized to a user&#39;s frequent flyer account standing. As stated above, the bucket definitions are transparent and may be fine tuned by the user or a company for a set of users. In one embodiment, a company (or user) can define a custom narrative for each bucket option, can define what buckets are viewed based on a set of bucket options, and/or can define the order of buckets that are viewed. 
         [0044]      FIG. 5  is a flowchart showing an embodiment of the operations performed to provide these recommendations. The server computer  310  (or client computer  305 ) receives travel criteria  340  (e.g., from the client computer  305 ) (Operation  505 ). The server computer  310  then retrieves or obtains travel data associated with the travel criteria from multiple sources (e.g., from the web, from a database, from other computers, from memory, etc.) (Operation  510 ). The data can be retrieved or obtained by the server computer  310  continuously, periodically, at various times, etc. The server computer  310  analyzes the travel data and, in one embodiment, applies various weights to the travel data (Operation  515 ). As stated above, the analysis of the travel data can include adjusting one or more weights based on the user&#39;s past interaction(s) with the web site. In one embodiment, the user  405  can tailor the analysis by specifying or adjusting particular weights that the user wants applied to different travel data. The server computer  310  then provides one or more personal travel recommendations to the user based on the analysis of the travel data (Operation  520 ). 
         [0045]    In one embodiment, the analysis of the travel data includes analyzing data associated with and/or recommendations provided to the user&#39;s social networking connections. For example, suppose the user  405  is connected to person B on a social networking site such as Facebook® or LinkedIn®. In one embodiment, the server computer  310  determines that person B is connected to user  405  via a social networking site and person B has always selected flights on a specific airline. In one embodiment, the server computer  310  utilizes this information in its personalized recommendation to the user  405 . For example, the personalized recommendation can indicate that user  405 ′s friend person B has previously selected flights on the particular airline. A recommendation associated with a user&#39;s “friend” or social connection may be beneficial to the user  405  (e.g., may provide more weight to the recommendation). Thus, in one embodiment, the personalized recommendations provided by the server computer  310  are tailored based on recommendations provided to or selections made by the user&#39;s social connections on a social networking site. 
         [0046]    In one embodiment, the web site displaying the personalized recommendations include advertisements. In one embodiment, the advertisements are related to the personalized recommendations. The advertisements may be provided by the server computer  310  and/or by a third party advertisement server. 
         [0047]      FIG. 6  is an embodiment of a user interface  600  showing personalized recommendations for user  405 . In one embodiment, the buckets selected and displayed include company value  615 , lowest cost  605 , fastest flights  610 , and comfort and ease  620 . If, for example, the user  405  never selects the comfort and ease recommendation  620 , in one embodiment the system will adjust based on the user&#39;s past transactions and not provide this recommendation in the future. In one embodiment, the user interface  600  includes a summary  630  of your travel criteria and/or additional information  640  associated with an option. The buckets/recommendations can include, for example, company value, best value, best for loyalty, best for productivity, fastest flights, lowest cost, comfort and ease (e.g., reclining seats, most space, most leg room, etc.), best technology (e.g., video screens available for each seat), best fitness center (in a hotel), best service, best meals, availability of wifi, availability of restaurants nearby, most entertainment available (e.g., shows playing near hotel), best facilities (e.g., swimming pool in hotel), etc. In one embodiment, the buckets presented as recommendations are based on a user profile for the user  405 . This user profile can be created by the user (e.g., when creating an account, at login, etc.) or can be determined based on previous user interactions with the web site. 
         [0048]      FIG. 7  shows one example of a schematic diagram illustrating a client device  705  (e.g., client device  305 ). Client device  705  may include a computing device capable of sending or receiving signals, such as via a wired or wireless network. A client device  705  may, for example, include a desktop computer or a portable device, such as a cellular telephone, a smartphone, a display pager, a radio frequency (RF) device, an infrared (IR) device, a Personal Digital Assistant (PDA), a handheld computer, a tablet computer, a laptop computer, a digital camera, a set top box, a wearable computer, an integrated device combining various features, such as features of the foregoing devices, or the like. 
         [0049]    The client device  705  may vary in terms of capabilities or features. Claimed subject matter is intended to cover a wide range of potential variations. For example, a cell phone may include a numeric keypad or a display of limited functionality, such as a monochrome liquid crystal display (LCD) for displaying text, pictures, etc. In contrast, however, as another example, a web-enabled client device may include one or more physical or virtual keyboards, mass storage, one or more accelerometers, one or more gyroscopes, global positioning system (GPS) or other location-identifying type capability, of a display with a high degree of functionality, such as a touch-sensitive color 2D or 3D display, for example. 
         [0050]    A client device  705  may include or may execute a variety of operating systems, including a personal computer operating system, such as a Windows, iOS or Linux, or a mobile operating system, such as iOS, Android, or Windows Mobile, or the like. A client device may include or may execute a variety of possible applications, such as a client software application enabling communication with other devices, such as communicating one or more messages, such as via email, short message service (SMS), or multimedia message service (MMS), including via a network, such as a social network, including, for example, Facebook®, LinkedIn®, Twitter®, Flickr®, or Google+®, to provide only a few possible examples. A client device may also include or execute an application to communicate content, such as, for example, textual content, multimedia content, or the like. A client device may also include or execute an application to perform a variety of possible tasks, such as browsing, searching, playing various forms of content, including locally stored or streamed video, or games (such as fantasy sports leagues). The foregoing is provided to illustrate that claimed subject matter is intended to include a wide range of possible features or capabilities. 
         [0051]    As shown in the example of  FIG. 7 , client device  705  may include one or more processing units (also referred to herein as CPUs)  722 , which interface with at least one computer bus  725 . A memory  730  can be persistent storage and interfaces with the computer bus  725 . The memory  730  includes RAM  732  and ROM  734 . ROM  734  includes a BIOS  740 . Memory  730  interfaces with computer bus  725  so as to provide information stored in memory  730  to CPU  722  during execution of software programs such as an operating system  741 , application programs  742 , device drivers, and software modules  743 ,  745  that comprise program code, and/or computer-executable process operations, incorporating functionality described herein, e.g., one or more of process flows described herein. CPU  722  first loads computer-executable process operations from storage, e.g., memory  732 , data storage medium/media  744 , removable media drive, and/or other storage device. CPU  722  can then execute the stored process operations in order to execute the loaded computer-executable process operations. Stored data, e.g., data stored by a storage device, can be accessed by CPU  722  during the execution of computer-executable process operations. 
         [0052]    Persistent storage medium/media  744  is a computer readable storage medium(s) that can be used to store software and data, e.g., an operating system and one or more application programs. Persistent storage medium/media  744  can also be used to store device drivers, such as one or more of a digital camera driver, monitor driver, printer driver, scanner driver, or other device drivers, web pages, content files, playlists and other files. Persistent storage medium/media  706  can further include program modules and data files used to implement one or more embodiments of the present disclosure. 
         [0053]    For the purposes of this disclosure a computer readable medium stores computer data, which data can include computer program code that is executable by a computer, in machine readable form. By way of example, and not limitation, a computer readable medium may comprise computer readable storage media, for tangible or fixed storage of data, or communication media for transient interpretation of code-containing signals. Computer readable storage media, as used herein, refers to physical or tangible storage (as opposed to signals) and includes without limitation volatile and non-volatile, removable and non-removable media implemented in any method or technology for the tangible storage of information such as computer-readable instructions, data structures, program modules or other data. Computer readable storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical or material medium which can be used to tangibly store the desired information or data or instructions and which can be accessed by a computer or processor. 
         [0054]    Client device  705  can also include one or more of a power supply  726 , network interface  750 , audio interface  752 , a display  754  (e.g., a monitor or screen), keypad  756 , illuminator  758 , I/O interface  760 , a haptic interface  762 , a GPS  764 , and/or a microphone  766 . 
         [0055]    For the purposes of this disclosure a module is a software, hardware, or firmware (or combinations thereof) system, process or functionality, or component thereof, that performs or facilitates the processes, features, and/or functions described herein (with or without human interaction or augmentation). A module can include sub-modules. Software components of a module may be stored on a computer readable medium. Modules may be integral to one or more servers, or be loaded and executed by one or more servers. One or more modules may be grouped into an engine or an application. 
         [0056]      FIG. 8  is a block diagram illustrating an internal architecture of an example of a computer, such as server computer  110  and/or client computer  105 , in accordance with one or more embodiments of the present disclosure. A computer as referred to herein refers to any device with a processor capable of executing logic or coded instructions, and could be a server, personal computer, set top box, smart phone, pad computer or media device, to name a few such devices. As shown in the example of  FIG. 8 , internal architecture  800  includes one or more processing units (also referred to herein as CPUs)  812 , which interface with at least one computer bus  802 . Also interfacing with computer bus  802  are persistent storage medium/media  806 , network interface  814 , memory  804 , e.g., random access memory (RAM), run-time transient memory, read only memory (ROM), etc., media disk drive interface  808  as an interface for a drive that can read and/or write to media including removable media such as floppy, CD-ROM, DVD, etc. media, display interface  810  as interface for a monitor or other display device, keyboard interface  816  as interface for a keyboard, pointing device interface  818  as an interface for a mouse or other pointing device, and miscellaneous other interfaces not shown individually, such as parallel and serial port interfaces, a universal serial bus (USB) interface, and the like. 
         [0057]    Memory  804  interfaces with computer bus  802  so as to provide information stored in memory  804  to CPU  812  during execution of software programs such as an operating system, application programs, device drivers, and software modules that comprise program code, and/or computer-executable process operations, incorporating functionality described herein, e.g., one or more of process flows described herein. CPU  812  first loads computer-executable process operations from storage, e.g., memory  804 , storage medium/media  806 , removable media drive, and/or other storage device. CPU  812  can then execute the stored process operations in order to execute the loaded computer-executable process operations. Stored data, e.g., data stored by a storage device, can be accessed by CPU  812  during the execution of computer-executable process operations. 
         [0058]    Persistent storage medium/media  806  is a computer readable storage medium(s) that can be used to store software and data, e.g., an operating system and one or more application programs. Persistent storage medium/media  806  can also be used to store device drivers, such as one or more of a digital camera driver, monitor driver, printer driver, scanner driver, or other device drivers, web pages, content files, playlists and other files. Persistent storage medium/media  806  can further include program modules and data files used to implement one or more embodiments of the present disclosure. 
         [0059]    For the purposes of this disclosure a computer readable medium stores computer data, which data can include computer program code that is executable by a computer, in machine readable form. By way of example, and not limitation, a computer readable medium may comprise computer readable storage media, for tangible or fixed storage of data, or communication media for transient interpretation of code-containing signals. Computer readable storage media, as used herein, refers to physical or tangible storage (as opposed to signals) and includes without limitation volatile and non-volatile, removable and non-removable media implemented in any method or technology for the tangible storage of information such as computer-readable instructions, data structures, program modules or other data. Computer readable storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical or material medium which can be used to tangibly store the desired information or data or instructions and which can be accessed by a computer or processor. 
         [0060]    For the purposes of this disclosure a module is a software, hardware, or firmware (or combinations thereof) system, process or functionality, or component thereof, that performs or facilitates the processes, features, and/or functions described herein (with or without human interaction or augmentation). A module can include sub-modules. Software components of a module may be stored on a computer readable medium. Modules may be integral to one or more servers, or be loaded and executed by one or more servers. One or more modules may be grouped into an engine or an application. 
         [0061]    Those skilled in the art will recognize that the methods and systems of the present disclosure may be implemented in many manners and as such are not to be limited by the foregoing exemplary embodiments and examples. In other words, functional elements being performed by single or multiple components, in various combinations of hardware and software or firmware, and individual functions, may be distributed among software applications at either the user device or server or both. In this regard, any number of the features of the different embodiments described herein may be combined into single or multiple embodiments, and alternate embodiments having fewer than, or more than, all of the features described herein are possible. Functionality may also be, in whole or in part, distributed among multiple components, in manners now known or to become known. Thus, myriad software/hardware/firmware combinations are possible in achieving the functions, features, interfaces and preferences described herein. Moreover, the scope of the present disclosure covers conventionally known manners for carrying out the described features and functions and interfaces, as well as those variations and modifications that may be made to the hardware or software or firmware components described herein as would be understood by those skilled in the art now and hereafter. 
         [0062]    While the system and method have been described in terms of one or more embodiments, it is to be understood that the disclosure need not be limited to the disclosed embodiments. It is intended to cover various modifications and similar arrangements included within the spirit and scope of the claims, the scope of which should be accorded the broadest interpretation so as to encompass all such modifications and similar structures. The present disclosure includes any and all embodiments of the following claims.