Patent Publication Number: US-11651387-B2

Title: Automatically presenting e-commerce offers based on browse history

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present application is a continuation of and claims the benefit of priority to U.S. Nonprovisional patent application Ser. No. 15/997,276, filed Jun. 4, 2018, which claims the benefit of U.S. Provisional Application Ser. No. 62/516,563 for “Automated Product History Analysis”, filed Jun. 7, 20171. U.S. application Ser. No. 15/997,276 is related to U.S. Utility application Ser. No. 15/898,435 for “Passive User-Generated Coupon Submission,” filed Feb. 17, 2018, is related to U.S. Utility application Ser. No. 15/677,951 for “Automated Testing of Multiple Online Coupons,” filed Aug. 15, 2017, and is related to U.S. Utility application Ser. No. 14/933,173 for “Universal Electronic Shopping Cart,” filed Nov. 5, 2015. The disclosures of all of the foregoing are incorporated by reference herein in their entireties. 
    
    
     TECHNICAL FIELD 
     The present document relates to techniques for automatically identifying offers, including deals and promotions, that may be relevant to an e-commerce consumer, based on the consumer&#39;s browse history at an e-commerce website. 
     DESCRIPTION OF THE RELATED ART 
     Online shoppers are often interested in finding offers (including coupons, deals, and/or promotions) that can maximize their savings on online purchases, with a minimum of effort. Such offers can typically be found at a number of different websites and may be available from a number of different sources; it can therefore take significant effort on the part of a consumer to find such offers. In addition, some offers found on websites may be invalid or may have expired before use, or may have restrictions preventing their use for a particular purchase. Manually seeking out offers from various sources, testing such offers on a particular order, and keeping track of which offers are valid and usable, can be cumbersome and unreliable. As a result, many users fail to obtain the best prices on items they purchase online. 
     SUMMARY 
     According to various embodiments, techniques are described for automatically extracting items from a user&#39;s browse history on one or more e-commerce websites, and automatically searching other e-commerce websites and sources for offers (including coupons, deals, and/or promotions) for those items and/or related items, and/or for stores related to those items. 
     Such automated techniques allow users to gain the benefit of online offers from various sources, without having to go through the effort of manually searching for such offers. Instead, the system and method automatically locate such offers based on the user&#39;s browse history, without requiring any action to be taken on the part of the user. 
     The described techniques can be used in the context of a universal electronic shopping cart, as described in the above-referenced U.S. Utility application Ser. No. 14/933,173, so as to automatically identify offers in connection with a user&#39;s browse history using the universal cart. Alternatively, the described techniques can be implemented in other contexts. 
     Further details and variations are described herein. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, together with the description, illustrate several embodiments. One skilled in the art will recognize that the particular embodiments illustrated in the drawings are merely exemplary, and are not intended to limit scope. 
         FIG.  1    is a block diagram depicting a system for automatically identifying offers that may be relevant to a user, based on the user&#39;s browse history at an e-commerce website, according to one embodiment. 
         FIG.  2    is a flowchart depicting a method for automatically identifying offers that may be relevant to a user, based on the user&#39;s browse history at an e-commerce website, according to one embodiment. 
         FIGS.  3  to  5    are examples of screen shots depicting results generated by the techniques described herein, according to various embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     The various concepts, architectures, methods, and modes of operation described herein are intended as illustrative examples that can be implemented singly or in any suitable combination with one another. Some may be omitted and others included, as suitable for various embodiments. Accordingly, the following description and accompanying Figures merely set forth a subset of the possible embodiments, and are not intended to limit scope. 
     Although described herein in terms of tangible goods, the system and method can be implemented for any type of online purchases, including for example services, travel, event tickets, media and entertainment content, and/or the like. 
     System Architecture 
     According to various embodiments, the system can be implemented on any electronic device or devices equipped to receive, store, and present information. Such electronic devices may include, for example, desktop computers, laptop computers, smartphones, tablet computers, smart watches, wearable devices, and/or the like. 
     Although the system is primarily described herein in connection with an implementation in a client/server context wherein the client is a computer, one skilled in the art will recognize that the techniques described herein can be implemented in other contexts, and indeed in any suitable device or devices capable of receiving and/or processing user input, and/or communicating with other components over an electronic network. Accordingly, the following description is intended to illustrate various embodiments by way of example, rather than to limit scope. 
     Referring now to  FIG.  1   , there is shown a block diagram depicting a system  100  for automatically identifying offers (including deals and promotions) that may be relevant to a consumer such as user  101 , based on user&#39;s  101  browse history  119  at an e-commerce website  109 , according to one embodiment. As shown in  FIG.  1   , in at least one embodiment, the system is implemented in a client/server environment wherein at least one web server  110  receives and responds to requests from client device  102 . 
     Client device  102  may be any electronic device equipped to receive, store, and/or present information, and to receive user input in connect with such information, such as a desktop computer, laptop computer, personal digital assistant (PDA), cellular telephone, smartphone, music player, handheld computer, tablet computer, kiosk, game system, smart watch, wearable device, or the like. 
     In at least one embodiment, client device  102  includes a number of hardware components well known to those skilled in the art. 
     Input device(s)  103  can be any element or elements capable of receiving input from user  101 , including, for example, a keyboard, mouse, stylus, touch-sensitive screen (touchscreen), touchpad, trackball, accelerometer, five-way switch, microphone, or the like. Input can be provided via any suitable mode, including for example, one or more of: pointing, tapping, typing, dragging, and/or speech. 
     Processor  106  can be a conventional microprocessor for performing operations on data under the direction of software, according to well-known techniques. 
     Memory  105  can be random-access memory, having a structure and architecture as are known in the art, for use by processor  106  in the course of running software. 
     Browser  107  is an example of a software application that can be used by user  101  to access and interact with websites over communications network  113 . In at least one embodiment, user  101  uses browser  107  to view and interact with e-commerce websites  109  operated by web servers  110 . Such interaction can include, for example, clicking on links to view items, placing items in a shopping cart, and/or the like. In other embodiments, any suitable app (software application) or other component can be used in place of browser  107 . In at least one embodiment, browser  107  maintains a set of cookies  120  that store state information for web pages visited by user  101 , using techniques that are well known in the art; such cookies  120  can be stored in browser  107 , or in data store  111 , and/or in memory  105 . Alternatively or additionally, cookies  120  can be stored remotely with respect to client device  102 , and can be made accessible to other devices, including other client devices. Cookies  120  can be used to provide access to user&#39;s  101  browse history  119  at various websites  109 , including user&#39;s  101  browse history  119  for a particular e-commerce website  109  and/or user&#39;s  101  browse history  119  over a plurality of different e-commerce websites  109 . Browse history  119  can indicate activity during a single session or any number of sessions. 
     In at least one embodiment, the techniques described herein are implemented by plug-in or extension  108  running on browser  107 . In other embodiments, plug-in/extension  108  can be omitted, and the functionality described herein and associated with plug-in/extension  108  can instead be performed by browser  107  itself, or any app (software application), operating system, or other component of client device  102 . 
     In at least one embodiment, browser  107  and/or plug-in/extension  108  can access browse history  119  for any particular website  109  based on state data stored in cookies  120 ; this allows browse history  119  to be easily retrieved in future sessions, using techniques that are known in the art. In alternative embodiments, other techniques besides cookies  120  can be used to access browse history  119  and to maintain such information from one session to another. 
     In at least one embodiment, as described in more detail below, browser  107  and/or plug-in/extension  108  automatically extracts items from user&#39;s  101  browse history  119  for one or more websites  109 , and searches these and/or other e-commerce websites  109  and sources for offers for those items that were browsed and/or for other related items. The searched e-commerce websites  109  and sources can include websites visited by user  101  and/or websites that user  101  has not visited. 
     Display screen  104  can be any element or component that graphically displays information such as items presented by browser  107 , user interface elements, and/or the like. Such output may include, for example, descriptions and images depicting items that user  101  may be interested in purchasing, indications of coupons and discounts, navigational elements, search results, graphical elements, prompts, windows, buttons, forms, and/or the like. In at least one embodiment where only some of the desired output is presented at a time, a dynamic control, such as a scrolling mechanism, may be available via input device  103  to change which information is currently displayed, and/or to alter the manner in which the information is displayed. 
     In at least one embodiment, the information displayed on display screen  104  may include data in text and/or graphical form. 
     Data store  111  can be any magnetic, optical, or electronic storage device for data in digital form; examples include flash memory, magnetic hard drive, CD-ROM, DVD-ROM, thumbdrive, or the like. Data store  111  may be fixed or removable. 
     In at least one embodiment, device  102  can include additional components. For example, a camera  114  can be included, as is well known for devices such as smartphones. Additional input mechanisms, sensors, and/or devices, not shown in  FIG.  1   , can also be included in device  102 , such as a speaker (for voice commands), accelerometer (to detect shaking and changes in position or orientation), GPS sensor (to detect location), and/or the like. 
     As mentioned above,  FIG.  1    depicts an example of a system implementation in a client/server environment. An example of such a client/server environment is a web-based implementation, wherein client device  102  runs browser  107  that provides a user interface for interacting with e-commerce websites  109  and/or other web-based resources. Plug-in/extension  108  also automatically monitors user&#39;s  101  browsing behavior and initiates searches for offers based on such browsing behavior. In at least one embodiment, plug-in/extension  108  attempts to apply such offers, determines success or failure of such attempted application, and stores information about valid promotions and deals in database  118 , which may be in local or remote data storage. 
     Information, images, and/or text from e-commerce websites  109  can be presented as part of such web pages and/or other web-based resources, using known protocols and languages such as Hypertext Markup Language (HTML), Java, JavaScript, and the like. Alternatively, such information, images, and/or text from e-commerce websites  109  can be presented by a software application (app) or other component running on client device  102 . 
     In at least one embodiment, plug-in/extension  108  or other software application runs in the background no matter what browser or application user  101  is running. The background application can thereby see all traffic, and in particular can alert user  101  to offers that are applicable to items in user&#39;s  101  browse history. 
     Any suitable type of communications network  113 , such as the Internet, can be used as the mechanism for transmitting data among components such as client device  102 , web server(s)  110 , e-commerce website(s)  109 , and promotion database  118 , according to any suitable protocols and techniques. In addition to the Internet, other examples include cellular telephone networks, EDGE, 3G, 4G, 5G, long term evolution (LTE), Session Initiation Protocol (SIP), Short Message Peer-to-Peer protocol (SMPP), SS7, Wi-Fi, Bluetooth, ZigBee, Hypertext Transfer Protocol (HTTP), Secure Hypertext Transfer Protocol (SHTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), and/or the like, and/or any combination thereof. Communications network  113  can be wired or wireless, or any combination thereof. Communications across network  113  can be encrypted or unencrypted. In at least one embodiment, client device  102  transmits requests for data via communications network  113 , and receives responses from servers  110  and/or websites  109  containing the requested data. 
     In at least one embodiment, some components of system  100  can be implemented as software written in any suitable computer programming language. Alternatively, such components may be implemented and/or embedded in hardware. 
     Referring now to  FIG.  2   , there is shown a flowchart depicting a method for automatically identifying offers (including coupons, deals, and/or promotions) that may be relevant to user  101 , based on user&#39;s  101  browse history at an e-commerce website  109 , according to one embodiment. 
     In at least one embodiment, the method depicted in  FIG.  2    can be performed using the architecture depicted in  FIG.  1   . However, one skilled in the art will recognize that the method can be performed using other architectures and arrangements. 
     In at least one embodiment, the described method is performed in connection with e-commerce shopping. More particularly, the method can be used in connection with a universal electronic shopping cart, as described in above-referenced U.S. Utility application Ser. No. 14/933,173, as well as in connection with techniques for automated testing of multiple online coupons, as described in above-referenced U.S. Utility application Ser. No. 15/677,951, and/or in connection with techniques for automatically storing coupon codes based on successful activation, as described in above-referenced U.S. Utility application Ser. No. 15/898,435. Alternatively, the described techniques can be implemented in other contexts. 
     In at least one embodiment, the method can be performed by plug-in or extension  108  on browser  107  running on client device  102 . Plug-in or extension  108  can be pre-installed before the steps described herein are performed. In other embodiments, the method can be performed by an app or by native functionality in browser  107  or in the operating system, or by a server such as one of web servers  110 , or in other ways. 
     In various embodiments, promotion database  118 , containing information about valid coupons, deals, and/or promotions, can be implemented locally or remotely with respect to client device  102 . In at least one embodiment, promotion database  118  can be accessed by other client devices as well. 
     In at least one embodiment, the method operates in connection with e-commerce shopping. As discussed above, many e-commerce websites maintain each user&#39;s  101  browse history  119 , keeping track of which products each user  101  has searched for, viewed, and/or placed in his or her shopping cart. Such information is tracked, for example, based on a unique identifier for each user  101 . Such identifier can be linked to log-in information entered manually by user  101 , and/or can be linked to an identifier extracted from a stored cookie  120  on device  102 . 
     The method begins  200 . User&#39;s  101  browse history  119  at one or more websites  109  is accessed  201 . In at least one embodiment, this step is performed by providing an identifier for user  101  to each website  109 , so as to gain access to user&#39;s  101  browse history  119 , for example on a particular browse history page associated with website  109 . The identifier can be obtained by prompting user  101  to enter a log-in and password, or by retrieving cookie  120 , or by retrieving the identifier from some other location where it has been stored. 
     Next, items are automatically extracted and identified  202  from user&#39;s  101  browse history  119  at one or more e-commerce websites  109 . These items can represent individual products that user  101  has browsed and/or product categories. In at least one embodiment, this step is performed by extracting product identifiers, such as vendor SKUs, for items in user&#39;s  101  browse history  119  as found in the product history page. In at least one embodiment, such extraction is performed using prepackaged code available from an Internet-based library or from a previously downloaded software application. The use of such code enables operations to be performed on an abstracted and conceptual basis without necessarily engaging in lower-level data and object manipulation. Optionally, the system can also identify items that are related to or correlated with products that user  101  has browsed. 
     Once these product identifiers have been obtained, the system automatically searches  203  for discount offers, which may include any coupons, deals, and/or promotions that are potentially applicable to the identified items, and/or promotions that may apply to other items or stores that may be of interest to user  101 . This may include searching for identical or similar items at other e-commerce websites  109  to locate a better offer, and/or searching for applicable coupon codes or other promotions from online repositories and other sources. 
     More specifically, step  203  may include, for example, searching in available databases (such as promotion database  118 ), maintained at a central server or elsewhere, of promotions and/or deals for products that match the extracted product identifiers. Additionally or alternatively, any number of e-commerce websites  109  and/or coupon/promotion websites can be searched for relevant items and/or promotions for the identified items, and/or for other items and/or stores likely to be of interest to user  101 . Such searches can be based on the names of the items, their SKU&#39;s, and/or any other identifying information. 
     In at least one embodiment, step  203  may include identifying, based on user&#39;s  101  browse history  119 , at least one item or store likely to be of interest to user  101 , and identifying one or more discount offers for the selected item or store. Thus, discount offers can be specific to particular items, or they may be applicable to websites or stores that are determined to be of likely interest to user  101  based on user&#39;s browse history  119 . 
     In at least one embodiment, the system aggregates information from browse history  119  obtained from two or more websites  109 , so as to generate an aggregated browse history that provides more complete information as to the products that interest user  101 . Search step  203  can then be performed on such aggregated browse history. 
     In at least one embodiment, the search can be extended to items other than those extracted from browse history  119  (and/or from the aggregated browse history). For example, a recommendation engine can be used to determine what other items and/or stores may interest user  101 , based on user&#39;s  101  browse history  119  (and/or aggregated browse history) and/or other factors. Such recommendation engine can use collaborative filtering or any other suitable technique for identifying items and/or stores that are likely to be of interest to user  101 . Alternatively, the system can identify items that are frequently purchased with those items in user&#39;s  101  browse history  119  (and/or aggregated browse history), or those items that are frequently purchased by other purchasers of the items in user&#39;s  101  browse history  119  (and/or aggregated browse history). In at least one embodiment, the system can take into account the buying/shopping preferences of other users that are similar to user  101 , either geographically, demographically, or in some other way, in identifying items likely to be of interest, using user&#39;s  101  browse history  119  (and/or aggregated browse history) as a starting point. 
     Searches for offers for such related items can then be performed automatically. 
     In at least one embodiment, the system can prioritize offers for identified items based on any suitable factor(s), such as for example: how recently user  101  viewed the item; how often user  101  viewed the item; whether user  101  placed the item in a shopping cart; whether user  101  attempted to buy the item; whether user  101  shopped for the item at multiple websites; whether user  101  searched for the item using a search engine; how popular the item is; how rare the item is; whether the item relates to other items previously purchased by user  101  or by similar users; and/or the like. The system can take into account such prioritizing when presenting offers for items, for example by presenting higher-priority items at the top of the display, or in some other more prominent way. 
     In at least one embodiment, the system can perform an optional step wherein any identified offers are tested  204  for validity, for example by automatically placing items in a shopping cart and attempting to apply the identified offers. 
     Once relevant offers (including coupons, deals, and/or promotions) have been identified (and optionally, tested), they are automatically presented  205  to user  101 , for example by outputting promo codes or by otherwise providing access to discounted prices. In at least one embodiment, this may take place using any suitable browser plug-in or extension that presents a button, window, pane, or other user interface element allowing user  101  to instantly place items in a shopping cart or universal cart, using one or more of the identified offers. In this manner, user  101  can instantly purchase the item from a website that may not necessarily be the same website  109  at which browsing history  119  was stored. Techniques for purchasing items via such a universal cart are described in the above-cited related applications. Alternatively, the user interface element can take the user to any suitable e-commerce website for purchasing the item. 
     In at least one embodiment, the system automatically suggests purchases based on the identified offers, and/or can automatically (with permission) place items in user&#39;s  101  shopping cart and/or complete purchases, based on availability of a particular offer. 
     Alternatively or additionally, the system can automatically enter coupon codes and/or promotional codes that have been automatically identified as being relevant, without any need for user  101  to manually enter such codes. In this manner, any available discounts can be automatically applied. 
     In at least one embodiment, the system can automatically select among multiple sources (such as e-commerce websites) for identified items, based on price, reliability, delivery speed, availability of options, and/or any other relevant factors. The system can then automatically direct user  101  to the selected source for the item. Such techniques are further described in the above-cited related applications. 
     The system may then proceed with purchase(s)  206  using selected offer(s) (including deal(s) and/or promotion(s)), either based on user  101  input or automatically. In at least one embodiment, the system receives  207  input from user  101  as to whether the presented offers are appropriate or desirable suggestions for user  101 . In at least one embodiment, the system takes such feedback into account in making future suggestions as to offers. For example, if user  101  has been browsing for a gift for another person, that browsing behavior can result in suggestions that are not applicable to user  101  him- or herself. Step  207  provides user  101  with an opportunity to provide feedback to indicate that he or she is not interested in future offers relating to such items, and the system can adjust its selection process accordingly so as to not identify offers for those items when making suggestions for that user  101 . 
     In at least one embodiment, the above-described steps are performed by the system in a background context of plug-in/extension  108 , so that user&#39;s  101  browse history  119  for a number of e-commerce websites  109  can be automatically gathered without interrupting or distracting user  101  from his or her shopping activities. In at least one embodiment, plug-in/extension  108  automatically obtains browse history  119  for user  101  by accessing a browse history page associated with e-commerce website  109 . As described above, a cookie  120  or other tracking information can be used to access browse history  119  automatically, without necessarily requiring user  101  to activate such an operation or to enter any identifying or authenticating information. If such cookie  120  or other tracking information is not available (for example if user  101  has disabled cookies  120  on browser  107 ), or if further authentication is needed, the system can prompt user  101  for any needed information and/or authentication information. 
     In at least one embodiment, the above-described method is automatically performed periodically, or whenever a user browses for items at an e-commerce website, or in response to any other trigger event. In another embodiment, the method is performed in response to user  101  clicking on a link or a button to initiate the process of looking for offers related to items in his or her browse history  119 . 
     In at least one embodiment, the above-described method can be optionally combined with automatic coupon testing, such as described in the above-referenced related applications. 
     Referring now to  FIG.  3   , there is shown an example of a screen shot  300  depicting results generated by the techniques described herein. In this example, the system has extracted a number of items  301  from user&#39;s  101  browse history  119  at Amazon.com, and has identified other sources that have better prices. The results are displayed in visual format. In at least one embodiment, user  101  can click on any of the displayed items  301  to see more information or to purchase the item  301  from the alternate source, automatically taking advantage of any applicable offers. 
     In addition, some or all of displayed items  301  may not necessarily be extracted from user&#39;s  101  browse history  119 , but may instead be items that are determined to be of possible or likely interest to user  101 , for example based on past shopping history, behavior, browsing, or the like. For example, collaborative filtering or some other automated recommendation technique can be used to determine, based on past shopping and/or browsing history, which items and/or offers are likely to be of interest to user  101 , and those items and/or offers can then be displayed. 
     Referring now to  FIG.  4   , there is shown another example of a screen shot  400  depicting results generated by the techniques described herein. In this example, in addition to display of opportunities to purchase particular extracted items  301  from user&#39;s  101  browse history  119 , the display also includes more general offers  401  that may be of interest to user  101 , such as discount offers or promotions for a store or website. Such general offers  401  can be identified and displayed based on past shopping and/or browsing history of user  101 , and/or on other factors. General offers  401  can include promotions for particular websites or merchants, or they can be applicable to items in user&#39;s  101  browse history. General offers  401  can be displayed alongside items  301  (as in  FIG.  4   ), or they can be displayed separately. Referring now to  FIG.  5   , there is shown an example of a screen shot  500  where general offers  401  are shown in one part of the screen, while opportunities to purchase particular extracted items  301  are shown in another part of the screen. 
     One skilled in the art will recognize that  FIGS.  3  to  5    depict examples only; in other embodiments, other layouts and displays can be used. 
     The present system and method have been described in particular detail with respect to possible embodiments. Those of skill in the art will appreciate that the system and method may be practiced in other embodiments. First, the particular naming of the components, capitalization of terms, the attributes, data structures, or any other programming or structural aspect is not mandatory or significant, and the mechanisms and/or features may have different names, formats, or protocols. Further, the system may be implemented via a combination of hardware and software, or entirely in hardware elements, or entirely in software elements. Also, the particular division of functionality between the various system components described herein is merely exemplary, and not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead be performed by a single component. 
     Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one embodiment. The appearances of the phrases “in at least one embodiment” or “in at least one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
     Various embodiments may include any number of systems and/or methods for performing the above-described techniques, either singly or in any combination. Another embodiment includes a computer program product comprising a non-transitory computer-readable storage medium and computer program code, encoded on the medium, for causing a processor in a computing device or other electronic device to perform the above-described techniques. 
     Some portions of the above are presented in terms of algorithms and symbolic representations of operations on data bits within the memory of a computing device. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps (instructions) leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared and otherwise manipulated. It is convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. Furthermore, it is also convenient at times, to refer to certain arrangements of steps requiring physical manipulations of physical quantities as modules or code devices, without loss of generality. 
     It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “displaying” or “determining” or the like, refer to the action and processes of a computer system, or similar electronic computing module and/or device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     Certain aspects include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions can be embodied in software, firmware and/or hardware, and when embodied in software, can be downloaded to reside on and be operated from different platforms used by a variety of operating systems. 
     The present document also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computing device. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, DVD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, flash memory, solid state drives, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. The program and its associated data may also be hosted and run remotely, for example on a server. Further, the computing devices referred to herein may include a single processor or may be architectures employing multiple processor designs for increased computing capability. 
     The algorithms and displays presented herein are not inherently related to any particular computing device, virtualized system, or other appa ratus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will be apparent from the description provided herein. In addition, the system and method are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings described herein, and any references above to specific languages are provided for disclosure of enablement and best mode. 
     Accordingly, various embodiments include software, hardware, and/or other elements for controlling a computer system, computing device, or other electronic device, or any combination or plurality thereof. Such an electronic device can include, for example, a processor, an input device (such as a keyboard, mouse, touchpad, track pad, joystick, trackball, microphone, and/or any combination thereof), an output device (such as a screen, speaker, and/or the like), memory, long-term storage (such as magnetic storage, optical storage, and/or the like), and/or network connectivity, according to techniques that are well known in the art. Such an electronic device may be portable or nonportable. Examples of electronic devices that may be used for implementing the described system and method include: a desktop computer, laptop computer, television, smartphone, tablet, music player, audio device, kiosk, set-top box, game system, wearable device, consumer electronic device, server computer, and/or the like. An electronic device may use any operating system such as, for example and without limitation: Linux; Microsoft Windows, available from Microsoft Corporation of Redmond, Wash.; Mac OS X, available from Apple Inc. of Cupertino, Calif.; iOS, available from Apple Inc. of Cupertino, Calif.; Android, available from Google, Inc. of Mountain View, Calif.; and/or any other operating system that is adapted for use on the device. 
     While a limited number of embodiments have been described herein, those skilled in the art, having benefit of the above description, will appreciate that other embodiments may be devised. In addition, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the subject matter. Accordingly, the disclosure is intended to be illustrative, but not limiting, of scope.