Patent Publication Number: US-2023145141-A1

Title: System and Method for Low-Level Continuous Driver Training

Description:
FIELD OF THE DISCLOSURE 
     The present disclosure generally relates to vehicle safety and, more particularly, to providing continuous safe-driver training. 
     BACKGROUND 
     Most drivers take a driver&#39;s education courses when they are first learning to drive. However, most drivers do not continue to learn safe driving techniques after completing the initial driver&#39;s education course and passing a driving test to obtain a driver&#39;s license. While additional courses such as traffic school classes and defensive driver training are effective in helping drivers drive more safely, drivers often do not take advantage of these opportunities to improve their driving because these types of courses are costly and time consuming. As a result, many drivers on the road are not properly trained or skilled, or have lapsed training. 
     SUMMARY 
     In one aspect, a computer-implemented method of providing continuous safe-driver training is provided. The computer-implemented method includes presenting, by a processor, a safe-driving challenge to an operator of a vehicle; analyzing, by a processor, data captured by sensors associated with the vehicle to determine that the operator of the vehicle has completed the safe-driving challenge; generating, by a processor, based on the determination that the operator of the vehicle has completed the safe-driving challenge, a notification to the operator; and randomly selecting, by a processor, whether a reward is to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge. 
     In another aspect, a computer system for providing continuous safe-driver training is provided. The computer system includes one or more processors and one or more memories. The one or more memories store instructions that, when executed by the one or more processors, cause the computer system to present a safe-driving challenge to an operator of a vehicle; analyze data captured by sensors associated with the vehicle to determine that the operator of the vehicle has completed the safe-driving challenge; generate, based on the determination that the operator of the vehicle has completed the safe-driving challenge, a notification to the operator; and randomly select whether a reward is to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge. 
     In still another aspect, a computer-readable storage medium for having stored thereon a set of instructions for providing continuous safe-driver training is provided. The set of instructions is executable by a processor. The instructions include instructions for presenting a safe-driving challenge to an operator of a vehicle; analyzing data captured by sensors associated with the vehicle to determine that the operator of the vehicle has completed the safe-driving challenge; generating, based on the determination that the operator of the vehicle has completed the safe-driving challenge, a notification to the operator; and randomly selecting whether a reward is to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG.  1 A  illustrates an exemplary computer system for providing continuous safe-driver training, in accordance with some embodiments. 
         FIG.  1 B  illustrates an exemplary mobile device and/or onboard computer operable within the system of  FIG.  1 A , in accordance with some embodiments. 
         FIGS.  2 A,  2 B and  2 C  illustrate exemplary user interface displays for providing continuous safe-driver training, in accordance with some embodiments. 
         FIG.  3    illustrates a flow diagram of an exemplary computer-implemented method of providing continuous safe-driver training, in accordance with some embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     Most drivers take a driver&#39;s education courses when they are first learning to drive. However, most drivers do not continue to learn safe driving techniques after completing the initial driver&#39;s education course and passing a driving test to obtain a driver&#39;s license. While additional courses such as traffic school classes and defensive driver training are effective in helping drivers drive more safely, drivers often do not take advantage of these opportunities to improve their driving because these types of courses are costly and time consuming. As a result, many drivers on the road are not properly trained or skilled, or have lapsed training. 
     A mobile device based driver training course can be incremental and require only a small amount of a driver&#39;s time (over a period of time) to allow for low-level continuous learning and improvement of driving skills. The course may be framed as a “game” including safe-driving-related challenges, quests, and/or missions for the driver. The challenges, quests, and/or missions may present the user with a bounded goal with achievement criteria, evaluation criteria, and progression criteria. 
     The challenges may include a time or a number of trips component. For example, a challenge may be to complete 10 trips without hard braking. As another example, a challenge may be to drive for one week without exceeding speed limits. As still another example, the challenge may be a challenge related to maintaining a “streak” of trips without hard braking, e.g., compared to previous personal record. In some instances, a driver may be presented with a particular challenge based on vehicle telematics data associated with the driver. For example, a driver whose telematics data indicates repeated issues with cornering may be presented with a cornering-related challenge. 
     Upon completion of a challenge, a driver may progress to a more difficult or more nuanced challenge. For example, after completing 10 trips without hard braking, the driver may progress to a challenge that requires 20 trips without hard braking. As another example, after completing 10 trips without hard braking, the driver may progress to a challenge that requires multiple safe driving skills, e.g., the challenge may be to complete 10 trips without hard braking or exceeding a speed limit. The challenges may be interspersed with guidance, information, videos, and/or tips. In some instances, the challenges may be presented within the context of an overarching lesson and/or unit, e.g., a speeding lesson. During a speeding lesson, for example, the driver may be presented with guidance with respect to speed limits, as well as information about the danger of exceeding speed limits (e.g., risk statistics for driving 10 miles over the speed limit, 20 miles, etc.), while a speed-limit related challenge is in progress. The lesson may also include data extracted from vehicle telematics data—e.g., indicating situations in which the driver typically speeds and how to avoid those situations. For example, the lesson may include an indication that the driver typically speeds around 8:30 am, during rush hour. In this case, for example, the lesson may include a tip about reducing speeding by leaving a little earlier. As another example, a braking lesson may include an indication that the driver typically brakes in certain freeway situations. In this case, for example, the lesson may include a tip about avoiding tailgating on the freeway in order to reduce the need for hard braking. 
     Moreover, upon completion of challenges or lessons, a driver may receive certain rewards. The nature and the timing of a reward may vary based on the driver receiving the reward, and/or may vary based on the challenge or lesson completed. Moreover, drivers may not receive rewards for every challenge or lesson completed. Specifically, the timing and nature of these rewards may be structured so that drivers see these rewards as exciting surprises rather than expected compensation. Types of rewards may range from discounts to promotional items to opportunities for participating in trials or beta testing of new programs. Advantageously, a company, such as an insurance company, may simultaneously reward drivers for their participation in a safe driving course while distributing promotional items and testing new programs. Moreover, certain new programs may benefit from testing on drivers who complete safe driving courses. For example, a rental vehicle program may be best tested on safer drivers. 
     Referring now to  FIG.  1 A , an exemplary computer system  100  for providing continuous safe-driver training is illustrated, in accordance with some embodiments. The high-level architecture illustrated in  FIG.  1 A  may include both hardware and software applications, as well as various data communication channels for communicating data between the various hardware and software components, as is described below. 
     As shown in  FIG.  1 A , a mobile device and/or on-board computer  102  (shown in greater detail at  FIG.  1 B ) may be associated with a vehicle  104  (which may be, e.g., a car, a truck, a boat, a motorcycle, a motorized scooter, or any other vehicle), and may be configured to present messages, notifications, or other information to an operator of a vehicle, e.g., via a user interface  152 , as shown in  FIG.  1 A . Specifically, the mobile device and/or on-board computer  102  may present a safe-driving challenge to the vehicle operator. The mobile-device and/or onboard computer  102  may interface with sensors  106 , which may capture vehicle telematics data and other suitable data associated with the vehicle. The mobile device and/or on-board computer  102  may be configured to communicate the captured sensor data to a server  108  via a network  110 . By analyzing this captured sensor data, the server  108  may determine when vehicle operators complete safe-driving challenges that are presented to them. Moreover, the server  108  may randomly select whether a reward is to be provided to a vehicle operator based on his or her completion of a safe-driving challenge. Additionally, by analyzing the data captured by the sensors  106 , the server  108  may identify trends of a vehicle operator&#39;s operation of the vehicle  104  to generate new safe-driving challenges tailored to specific vehicle operators, e.g., a braking-related safe-driving challenge for a vehicle operator who struggles with braking, a speeding-related safe-driving challenge for a vehicle operator who struggles with speeding, etc. 
     As shown in  FIG.  1 A , the server  108  may include a controller  112  that may be operatively connected to the one or more databases  114  via a link, which may be a local or a remote link. The one or more databases  114  may be adapted to store data related to, inter alia, safe-driving challenges, including various levels of safe driving challenges, and/or safe-driving challenges designed to target various types of driving skills, indications of vehicle sensor readings associated with various types of driving, speed limits in different areas and on different road segments, language to be used in notifications provided to vehicle operators, possible rewards to be provided to vehicle operators, etc. It should be noted that, while not shown, additional databases may be linked to the controller  112 . Additionally, separate databases may be used for various types of information, in some instances. Additional databases (not shown) may be communicatively connected to the server  108  via the network  110  in some embodiments. 
     The controller  112  may include one or more program memories  116 , one or more processors  118  (which may be, e.g., microcontrollers and/or microprocessors), one or more random-access memories (RAMs)  120 , and an input/output (I/O) circuit  122 , all of which may be interconnected via an address/data bus. Although the I/O circuit  122  is shown as a single block, it should be appreciated that the I/O circuit  122  may include a number of different types of I/O circuits. The program memory  116  and RAM  120  may be implemented as semiconductor memories, magnetically readable memories, optically readable memories, or biologically readable memories, for example. Generally speaking, the program memory  116  and/or the RAM  120  may respectively include one or more non-transitory, computer-readable storage media. The controller  112  may also be operatively connected to the network  110  via a link. 
     The server  108  may further include a number of various software applications  124 ,  126 ,  128 ,  130  stored in the program memory  116 . Generally speaking, the applications may perform one or more functions related to, inter alia, transmitting information to the mobile device and/or onboard computer  102 , receiving information from the mobile device and/or onboard computer  102 , presenting a safe-driving challenge to an operator of a vehicle; analyzing data captured by sensors associated with the vehicle to determine that the operator of the vehicle has completed the safe-driving challenge; generating, based on the determination that the operator of the vehicle has completed the safe-driving challenge, a notification to the operator; randomly selecting whether a reward is to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge; randomly selecting a type of reward to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge; presenting a second safe-driving challenge after the completion of the first safe-driving challenge, etc. For example, one or more of the applications  124 ,  126 ,  128 ,  130  may perform at least a portion of any of the method  300  shown in  FIG.  3   . The various software applications  124 ,  126 ,  128 ,  130  may be executed on the same processor  126  or on different processors. Although four software applications  124 ,  126 ,  128 ,  130  are shown in  FIG.  1 A , it will be understood that there may be any number of software applications  124 ,  126 ,  128 ,  130 . Further, two or more of the various applications  124 ,  126 ,  128 ,  130  may be integrated as an integral application, if desired. 
     It should be appreciated that although the server  108  is illustrated as a single device in  FIG.  1 A , one or more portions of the server  108  may be implemented as one or more storage devices that are physically co-located with the server  108 , or as one or more storage devices utilizing different storage locations as a shared database structure (e.g. cloud storage). In some embodiments, the server  108  may be configured to perform any suitable portion of the processing functions remotely that have been outsourced by the on-board computer and/or mobile device  102 . 
     Referring now to  FIG.  1 B , the exemplary mobile device and/or onboard computer  102  associated with the vehicle  104  is illustrated in greater detail, in accordance with some embodiments. The mobile device and/or onboard computer  102  may include one or more of a GPS unit  154 , an accelerometer  156 , one or more other sensors  158 , a communication unit  160 , and/or a controller  162 . 
     The GPS unit  154  may be disposed at the mobile device and/or onboard computer  102  and may collect data indicating the location of the mobile device and/or onboard computer  102 , and/or (e.g., by proxy) the vehicle  104 . Moreover, in some embodiments the GPS unit  140  may be a separate device disposed within or external to the vehicle  104  (e.g., one of the sensors  106 ), and interfacing with the mobile device and/or onboard computer  102 . The accelerometer  156  may be disposed at the mobile device and/or onboard computer  102  and may collect data indicating the acceleration of the mobile device and/or onboard computer  102  and/or (e.g., by proxy) the vehicle  104 . Moreover, in some embodiments the GPS unit  156  may be a separate device disposed within or external to the vehicle  104  (e.g., one of the sensors  106 ), and interfacing with the mobile device and/or onboard computer  102 . In general, the GPS unit  154 , an accelerometer  156 , one or more other sensors  158 , and the sensors  106  may be configured to capture vehicle telematics data associated with the vehicle  104 , e.g., one or more of speed data, acceleration data, braking data, cornering data, following distance data, turn signal data, seatbelt use data, location data, date/time data, or any other suitable vehicle telematics data. The communication unit  160  may be disposed at the mobile device and/or onboard computer  102  and may, e.g., transmit and receive information from external sources such as, e.g., the server  108 , e.g., via the network  110 . 
     As shown in  FIG.  1    B, the mobile device and/or onboard computer  102  may include a controller  162  may include one or more program memories  164 , one or more processors  166  (which may be, e.g., microcontrollers and/or microprocessors), one or more random-access memories (RAMs)  168 , and an input/output (I/O) circuit  170 , all of which may be interconnected via an address/data bus. Although the I/O circuit  170  is shown as a single block, it should be appreciated that the I/O circuit  170  may include a number of different types of I/O circuits. The program memory  164  and RAM  168  may be implemented as semiconductor memories, magnetically readable memories, optically readable memories, or biologically readable memories, for example. Generally speaking, the program memory  164  and/or the RAM  168  may respectively include one or more non-transitory, computer-readable storage media. The controller  162  may also be operatively connected to the network  110  via a link. 
     The mobile device and/or onboard computer  102  may further include a number of various software applications  172 ,  174 ,  176 ,  178  stored in the program memory  164 . Generally speaking, the applications may perform one or more functions related to, inter alia, transmitting information to the server  108 ; receiving information from the server  108 ; presenting a safe-driving challenge to an operator of a vehicle; analyzing data captured by sensors associated with the vehicle to determine that the operator of the vehicle has completed the safe-driving challenge; generating, based on the determination that the operator of the vehicle has completed the safe-driving challenge, a notification to the operator; randomly selecting whether a reward is to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge; randomly selecting a type of reward to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge; presenting a second safe-driving challenge after the completion of the first safe-driving challenge, etc. For example, one or more of the applications  172 ,  174 ,  176 ,  178  may perform at least a portion of any of the method  300  shown in  FIG.  3   . The various software applications  172 ,  174 ,  176 ,  178  may be executed on the same processor  166  or on different processors. Although four software applications  172 ,  174 ,  176 ,  178  are shown in  FIG.  1    B, it will be understood that there may be any number of software applications  172 ,  174 ,  176 ,  178 . Further, two or more of the various applications  172 ,  174 ,  176 ,  178  may be integrated as an integral application, if desired. Additionally, it should be appreciated that in some embodiments, the mobile device and/or onboard computer  102  may be configured to perform any suitable portion of the processing functions described as being performed by the server  108 . 
     Referring now to  FIGS.  2 A,  2 B, and  2 C , exemplary user interface displays for providing continuous safe-driver training are illustrated, in accordance with some embodiments. As shown in  FIG.  2 A , a safe-driving challenge may be presented to an operator of a vehicle. The safe-driving challenge may include a metric for completion of the challenge, e.g., “Complete 10 consecutive trips without exceeding speed limits.” As shown in  FIG.  2 B , when the operator of the vehicle completes the safe driving challenge (e.g., as indicated by an analysis of sensor data associated with the vehicle) a notification may be generated, e.g., congratulating the operator of the vehicle on the successful completion of the challenge. Moreover, the notification may include an indication that the operator of the vehicle has received a reward (e.g., an invitation to participate in an exclusive trial program) based on the completion of the safe-driving challenge. As shown in  FIG.  2 C , a second safe-driving challenge may be presented to the operator of the vehicle after the completion of the first safe-driving challenge. In some instances, the second safe-driving challenge may be a more difficult version of the first safe-driving challenge. For instance, after the operator completes a first challenge of completing 10 consecutive trips without exceeding speed limits, the second challenge presented to the vehicle operator may be: “Complete 20 consecutive trips without exceeding speed limits.” 
     Referring now to  FIG.  3   , a flow diagram of an exemplary computer-implemented method  300  of providing continuous safe-driver training is illustrated, in accordance with some embodiments. The method  300  can be implemented as a set of instructions stored on a computer-readable memory and executable on one or more processors. 
     A safe-driving challenge may be presented (block  302 ) to an operator of a vehicle. The safe-driving challenge may be presented via a user interface of a mobile device and/or onboard computer associated with the vehicle, e.g., as shown in  FIG.  2 A . In some instances, the safe-driving challenge may be framed as a “quest” or “mission.” In particular, the safe-driving challenge may include one or more parameters for completion by the vehicle operator. For instance, the safe-driving challenge may be presented as a goal to be achieved over time, or over a certain number of trips. For example, a vehicle operator may be challenged to complete 10 trips without hard braking. As another example, a vehicle operator may be challenged drive for one week without exceeding speed limits. As still another example, the safe-driving challenge may be related to maintaining a “streak” of trips without hard cornering, e.g., compared to previous personal record. In some embodiments, the challenge may be presented alongside tips or tricks for achieving the challenge. For example, if the vehicle operator is challenged to drive for one week without hard braking, tips related to avoiding hard braking may periodically be presented to the vehicle operator during that week. 
     In some instances, the safe-driving challenge presented to a particular operator may be selected based on data captured by the sensors associated with the operator&#39;s vehicle. For example, a vehicle operator whose sensor data indicates repeated issues with cornering may be presented with a cornering-related challenge, while a vehicle operator whose sensor data indicates repeated issues with following speed limits may be presented with a speed-limit challenge. 
     Data captured by sensors associated with the vehicle may be analyzed (block  304 ) to determine whether the operator of the vehicle has completed the safe driving challenge. For example, the data captured by the sensors associated with the vehicle may include speed data, acceleration data, braking data, cornering data, object range distance data, turn signal data, seatbelt use data, location data, phone use data, weather data, road type data, etc. The data captured by the sensors associated with the vehicle may be analyzed to identify, e.g., a number of vehicle trips and/or a number of consecutive vehicle trips in which the data captured by sensors associated with the vehicle indicates operation of the vehicle in accordance with the parameters of the challenge, a frequency of vehicle trips in which the data captured by sensors associated with the vehicle indicates operation of the vehicle in accordance with the parameters of the challenge, a duration of vehicle operation time during which the data captured by sensors associated with the vehicle indicates operation of the vehicle in accordance with the parameters of the challenge, a distance traveled by a vehicle during which the data captured by sensors associated with the vehicle indicates operation of the vehicle in accordance with the parameters of the challenge, a number of calendar days during which the data captured by sensors associated with the vehicle indicates operation of the vehicle in accordance with the parameters of the challenge, etc. For instance, acceleration data captured over time may be used to determine a frequency of vehicle trips in which the vehicle operator accelerates safely. As another example, speed data captured over time may be used to determine whether a vehicle operator follows speed limits over the course of a week. 
     A notification to the operator may be generated (block  306 ) based on the determination that the operator of the vehicle has completed the safe-driving challenge. The notification may be displayed on a user interface of a mobile device and/or on-board computer associated with a vehicle, e.g., as shown in  FIG.  2 B . For instance, the notification may indicate the operator of the vehicle that he or she has completed the safe-driving challenge, and may include verbal praise, congratulations, or other positive feedback related to the completion of the safe-driving challenge. 
     A determination of whether a reward is to be provided to the operator of the vehicle (or not) based on the determination that the operator of the vehicle has completed the safe-driving challenge may be randomly selected (block  308 ). For example, a random number generator application may be used to generate a random number. Some numbers may be associated with an outcome of providing a reward to the operator of the vehicle, while other numbers may be associated with an outcome of not providing a reward to the operator of the vehicle. For instance, even numbers may correspond to providing a reward to the operator of the vehicle, while odd numbers may correspond to not providing a reward to the operator of the vehicle, or vice versa. Accordingly, based on the number generated by the random number generator, a reward may be provided to the operator of the vehicle, or may not be provided to the operator of the vehicle. If a reward is to be provided to an operator of a vehicle, a notification may be presented to the operator of the vehicle indicating that the operator is to receive a reward (e.g., as shown in  FIG.  2 B ). 
     In some instances, a type of reward to be provided to the operator of the vehicle based on the determination that the operator of the vehicle has completed the safe-driving challenge may also be randomly selected. The type of reward may be randomly selected in a similar way as the determination of whether a reward is to be provided. For instance, a random number generator application may be used to generate a random number. Some numbers may be associated with certain types of rewards. For instance, types of rewards may include discounts (e.g., from insurance providers or from other third parties), promotional products (including products related to safe driving and/or safe vehicle operation, such as helmets), and/or access to participate in a trial program. Accordingly, based on the number generated by the random number generator, a certain type of reward may be provided to the operator of the vehicle. A notification may be presented to the operator of the vehicle indicating the type of reward that the operator is to receive (e.g., as shown in  FIG.  2 B ). 
     In some instances, after the operator of the vehicle has completed a first safe-driving challenge, a second safe-driving challenge may be presented to the operator of the vehicle (and a third safe-driving challenge may be presented to the operator of the vehicle after the completion of the second safe-driving challenge, and so on). In some instances, the second safe-driving challenge may be similar to the first safe-driving challenge but somewhat more difficult. For instance, if the first safe-driving challenge included parameters of driving for one week without speeding, the second safe-driving challenge may include parameters of driving for two weeks without speeding or driving for one month without speeding. A notification may be presented to the operator, indicating a second safe-driving challenge (e.g., as shown in  FIG.  2 C ). 
     With the foregoing, an insurance customer may opt-in to a rewards, insurance discount, or other type of program. After the insurance customer provides their affirmative consent, an insurance provider remote server may collect data from the customer&#39;s mobile device, smart home controller, or other smart devices—such as with the customer&#39;s permission or affirmative consent. The data collected may be related to insured assets before (and/or after) an insurance-related event, including those events discussed elsewhere herein. In return, risk averse insureds may receive discounts or insurance cost savings related to home, renters, personal articles, auto, and other types of insurance from the insurance provider. 
     In one aspect, data, including the types of data discussed elsewhere herein, may be collected or received by an insurance provider remote server, such as via direct or indirect wireless communication or data transmission from a smart home controller, mobile device, or other customer computing device, after a customer affirmatively consents or otherwise opts-in to an insurance discount, reward, or other program. The insurance provider may then analyze the data received with the customer&#39;s permission to provide benefits to the customer. As a result, risk averse customers may receive insurance discounts or other insurance cost savings based upon data that reflects low risk behavior and/or technology that mitigates or prevents risk to (i) insured assets, such as homes, personal belongings, or vehicles, and/or (ii) home or apartment occupants. 
     Although the foregoing text sets forth a detailed description of numerous different embodiments, it should be understood that the legal scope of the invention may be defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment, as describing every possible embodiment would be impractical, if not impossible. One could implement numerous alternate embodiments, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims. 
     Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein. 
     Additionally, certain embodiments are described herein as including logic or a number of routines, subroutines, applications, or instructions. These may constitute either software (e.g., code embodied on a non-transitory, machine-readable medium) or hardware. In hardware, the routines, etc., are tangible units capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein. 
     In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that may be permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that may be temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations. 
     Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time. 
     Hardware modules may provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it may be communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and may operate on a resource (e.g., a collection of information). 
     The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules. 
     Similarly, the methods or routines described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented hardware modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within an office environment, or as a server farm), while in other embodiments the processors may be distributed across a number of locations. 
     Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or a combination thereof), registers, or other machine components that receive, store, transmit, or display information. 
     As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
     As used herein, the terms “comprises,” “comprising,” “may include,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present). 
     In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the description. This description, and the claims that follow, should be read to include one or at least one and the singular also may include the plural unless it is obvious that it is meant otherwise. 
     This detailed description is to be construed as examples and does not describe every possible embodiment, as describing every possible embodiment would be impractical, if not impossible. One could implement numerous alternate embodiments, using either current technology or technology developed after the filing date of this application. 
     The patent claims at the end of this patent application are not intended to be construed under 35 U.S.C. § 112(f) unless traditional means-plus-function language is expressly recited, such as “means for” or “step for” language being explicitly recited in the claim(s). The systems and methods described herein are directed to an improvement to computer functionality, and improve the functioning of conventional computers.