Abstract:
Methods, systems, and devices are disclosed for resolving a risk associated with a shipped physical object. The methods and servers comprise associating a time with a geographical region. The methods and servers also comprise receiving a set of locations associated with transport of a physical object. In addition, the methods and servers comprise determining that the set of locations fails to satisfy a condition associated with the time and the geographical region. The sensor devices report location data to a server at a first time interval, wherein the location data fails to satisfy a condition associated with a time and a geographical region. The sensor devices also receive an indication of a panic mode. In addition, the sensor devices also report location data to the server at a second time interval, wherein the second time interval is different than the first time interval.

Description:
TECHNICAL FIELD 
       [0001]    The present disclosure relates to the field of shipping and. more particularly, methods, systems, and devices for detecting and resolving risks associated with shipped objects. 
       BACKGROUND 
       [0002]    Information regarding, shipped objects (e.g., packages, envelopes, or other physical objects) is often useful for various entities involved in the shipping process. For example, status information of a shipped object may be useful for a sender, a receiver, or the entity responsible for managing the shipping process. Such status information may include, for example, whether a shipped object has arrived at its destination or the latest known location of a shipped object during transit from an origin to the destination. 
         [0003]    Location information is commonly provided by updating a location associated with a shipped object when the object arrives to a specific location. For example, upon arrival at an intermediary shipping facility, a shipped object&#39;s latest known location may be updated to reflect a location associated with the intermediary shipping facility. However, existing techniques for tracking a shipped object are often limited in usefulness when situations arise that may be a risk to a shipped object. For example, existing techniques for tracking a shipped object are often limited in usefulness for a shipped object that is off pace (e.g., the shipped object is delayed) or of track (e.g., the shipped object has deviated from a planned route) because existing techniques frequently rely on a shipped object passing through facilities having known locations. 
         [0004]    Improvements in techniques for detecting and resolving risks associated with shipped objects are desirable. 
       SUMMARY 
       [0005]    In one disclosed embodiment, a method for a shipped physical object is disclosed. The method comprises associating a time with a geographical region, receiving a set of locations associated with transport of a physical object, and determining, using a processor, that the set of locations fails to satisfy a condition associated with the time and the geographical region. 
         [0006]    In another disclosed embodiment, a server for a shipped physical object is disclosed. The server comprises a processor and memory. The memory has instructions which, when executed by the processor, cause the server to perform operations comprising associating a time with a geographical region, receiving a set of locations associated with transport of a physical object, and determining, using a processor, that the set of locations fails to satisfy a condition associated with the time and the geographical region. 
         [0007]    In another disclosed embodiment, a sensor device is disclosed. The sensor device comprises a sensor, a transceiver, a processor, and memory. The memory has instructions which, when executed by the processor, cause the sensor device to perform operations comprising reporting location data, captured by the sensor, to a server using the transceiver at as first time interval, wherein the location data fails to satisfy a condition associated with a time and a geographical region, receiving, using the transceiver, an indication of a panic mode, and reporting location data, captured by the sensor, to the server using the transceiver at as second time interval, wherein the second time interval is different than the first time interval. 
         [0008]    Additional aspects related to the embodiments will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. 
         [0009]    It is to be understood that both the foregoing, general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]      FIG. 1  illustrates an example system that may be used for implementing the disclosed embodiments. 
           [0011]      FIG. 2  illustrates an example device that may be used for implementing the disclosed embodiments. 
           [0012]      FIG. 3  illustrates an example device that may be used for implementing the disclosed embodiments. 
           [0013]      FIG. 4  illustrates an example method for determining a potential risk in accordance with the disclosed embodiments. 
           [0014]      FIG. 5  illustrates an example method for determining distance and/or time in accordance with the disclosed embodiments. 
           [0015]      FIG. 6  illustrates an example method for implementing a panic button in accordance with the disclosed embodiments. 
           [0016]      FIG. 7  illustrates an example method for implementing a panic button in accordance with the disclosed embodiments. 
           [0017]      FIG. 8  illustrates an example screenshot of a user interface in accordance with the disclosed embodiments. 
           [0018]      FIG. 9  illustrates an example screenshot of a user interface in accordance with the disclosed embodiments. 
       
    
    
     DETAILED DESCRIPTION 
       [0019]    Reference will now be made in detail to the example embodiments, which are illustrated in the accompanying drawings. Wherever possible, the same reference n umbers will be used throughout the drawings to refer to the same or like parts. 
         [0020]    Shipped object location information, as well as other environmental information associated with a shipped object, can be determined more accurately and frequently by including a sensor device with or near a shipped object. A server may store data that links a sensor device with one or more shipped objects, if, for example, one sensor device is placed in a container that includes a plurality of shipped objects. As sensor data is received from the sensor device at the server, the data may be associated with shipped objects associated with the sensor device. 
         [0021]    A shipped object may be associated with a number of risks, such as, for example, a risk that a shipped object is lost, damaged, or stolen. The location data received from a sensor device helps, for example, to improve handling of risks associated with a shipped object. For example, one or more geofences (i.e., selected or defined geographical areas) may be established. Times may be associated with the established geofences, such that, if a sensor device and thus a shipped object) does not reach or exit a particular geofence by a selected time, a risk may be detected. 
         [0022]    A number of operations can be performed based on a detected risk. For example. a panic button may be enabled in as user interface. If the panic button is selected, a number of actions may be performed such as, for example transmitting a panic mode indication to the sensor device to alter a reporting time interval of sensor data, notifying one or more parties associated with the shipped object that is associated with the sensor device, disabling any delay of location data about the shipped object that is available in a user interface, and/or creating a customer support case to resolve issues that will arise because of the determined risk. 
         [0023]      FIG. 1  is a diagram illustrating an example system  100  that may be used for implementing the disclosed embodiments. System  100  includes, among other things, one or more servers  110 , one or more sensor devices  120 , one or more user interfaces  130 , one or more remote devices  140 , and one or more data sources  150 . In some embodiments, as depicted in  FIG. 2 , server  110  includes, among other things, one or more processors  210 , memory  220 , and one or more transceivers  230 . Processor  210  may be any processor suitable for the execution of a computer program including, by way of example, one or more general purpose microprocessors or special purpose microprocessors. Memory  220  may store computer program code that may be executed by the processor  210 . Transceiver  230  may facilitate sending data to and receiving data from external sources (e.g., via the Internet or via a cellular network). For example, server  110  may be configured to send data to and receive data from a sensor device  120 , a user interface  130 , a remove device  140 , and/or a data source  150 . In some embodiments, memory  220  of server  110  also stores a database. The database may comprise, for example, data regarding the status (e.g., data regarding location, acceleration, motion, temperature, pressure, and/or other environmental parameters) of one or more shipped objects. 
         [0024]    In some embodiments, as depicted in  FIG. 3 , sensor device  120  includes, among other things, one or more sensors  310 , one or more processors  320 , memory  330 , one or more wake-up mechanisms  340 , one or more transceivers  350 , and one or more antennas  360 . Sensor(s)  310  may measure one or more environmental parameters associated with the sensor device  120 . For example, a sensor  310  may measure acceleration, motion, temperature, pressure, location, and/or other environmental parameters. For example, to sensor  310  may be as GPS sensor that measures the GPS coordinates associated with sensor device  120 . Memory  330  may store computer program code that may be executed by the processor  320 . Processor  320  may be configured to monitor sensor(s)  310 . Processor  320  may, for example, stare monitored sensor data in memory  330  and/or may transmit monitored sensor data via transceiver  350  and antenna  360 . While sensor device  120  is depicted as a single device, sensor device  120  may also be a set of devices that operate in conjunction. For example, a set of devices may include sensors  310  that send monitored sensor data to another device that transmits monitored sensor data via a transceiver  350  and antenna  360 . 
         [0025]    In some embodiments, sensor device  120  is capable of entering a “sleep” mode in which some or all of its components are powered aft or put in a low-power state. Wake-up mechanism  340  may receive power in such a sleep mode and may be configured to cause sensor device  120  to resume normal operation upon receiving a signal to exit sleep mode. For example, wake-up mechanism  340  may be connected to a clock (not shown), wherein, at a predetermined time determined based on the dock, the wake-up mechanism  340  causes sensor device  120  to resume normal operation. 
         [0026]    Transceiver  350  may facilitate sending data to and receiving, data from external sources (e.g., via the Internet or via a cellular network). Transceiver  370  may utilize antenna  360  to send and receive data via, for example, a cellular network. In some embodiments, memory  330  stores data regarding the destination for data obtained from sensor(s)  310 . Sensor device  120  may, for example, be configured to transmit, using transceiver  350  and antenna  360 , data from sensor(s)  310  to server  110 . In some embodiments sensor device  120  and server  110  interact directly. However, in other embodiments, any number of intermediary devices may route data sent between sensor device  120  and server  110 . 
         [0027]    In some embodiments, memory  330  stores a predetermined transmission rate. Sensor data from sensor(s)  310  may be transmitted, using transceiver  350  and antenna  360 , to server  110  at a rate that corresponds to the predetermined transmission rate. In some embodiments, if data temporarily cannot be sent from sensor device  110  (e.g., due to a temporary loss of cellular reception or due to the sensor device  110  being in an “airplane” mode in which the transceiver  350  and antenna  360  are turned off), data from sensor(s)  310  may be temporary stored in memory  330  until data can be sent from sensor device  110 , and, optionally, may be sent in a batch to server  110 . 
         [0028]    In some embodiments, the sensor device  120  is capable of receiving notifications regarding altered modes of operation. For example, sensor device  120  may be notified that it should enter a special mode in which sensor data is transmitted to server  110  at an altered time interval. 
         [0029]    In some embodiments, sensor device  120  is placed within or near a shipped object. Server  110  may store data that associates a shipped object identifier with sensor device  120 . In some embodiments, more than one shipped object may be associated with a single sensor device  120 . Thus, as data is received by server  110  from sensor device  120 , the data may be associated with each shipped object that is associated with sensor device  120 . 
         [0030]    User interface  130  provides a user interface for accessing information regarding shipments. For example, user interface  130  may display a travelled path of a shipped object (based on a travelled path of sensor device  120 ) based on data stored in server  110 . Moreover, use interface  130  may display historical and current alerts associated with a shipped object. For example, in some embodiments, server  110  may send user interface  130  an indication that a potential risk associated with a shipped object is present. The user interface  130  may be configured to display a panic button in response to the potential risk. In some embodiments, a panic button is a selectable visual indication that a panic mode may be entered. Thus, a user may select the panic button to cause various actions to occur, described in more detail below. A selection may be received in a number of ways, including, for example, a mouse click, a finger touch (e.g., if a user interface is displayed on a touch-sensitive screen), a textual entry, a spoken command, etc. 
         [0031]    In some embodiments, user interface  130  is an application that is executed on server  110 . In such embodiments, a user may use a device (e.g., a computer, a mobile phone, a laptop, etc.) to access the user interface  130  remotely. In other embodiments, however, user interface  130  could be executed locally on a user&#39;s device. In such embodiments, user interlace  130  may obtain data from server  110 . Moreover, user interface  130  may be a single user interface that users (e.g., registered senders or receivers of a shipped package) and administrators (e.g., individuals associated with the entity responsible for managing the shipping process) can access. Alternatively, user interface  130  may be two or more user interfaces configured for access by various entities (e.g., one user interface that can be accessed by users and another user interface, with greater authorization, that can be accessed by administrators). 
         [0032]    System  100  may also include a number of remote devices  140 . For example, a user may provide a phone number for a mobile device to receive alerts. In addition to, or as an alternative to, sending indications of potential risks to user interface  130 , server  110  may send indications of potential risks to remote devices  140 . For example, an indication of as potential risk may be sent to a user&#39;s mobile device, the mobile device may display a panic button, and the user may select the panic button to cause various actions to occur. Moreover, server  110  may be configured to send other information to remote devices  140 . For example, server  110  may be configured to send remote devices  140  information in response to a determination that a panic button has been selected. 
         [0033]    System  100  may also include a number of data sources  150 . A data source  150  may be any source of data other than sensor device  120 , including, for example, a schedule of flights, a weather forecast, traffic data, etc. Server  110  may access data sources  150  for a variety of reasons, such as, for example, to determine a travel path to a destination, including alternate travel paths once a shipped object is already in route to a destination, or to calculate an estimated time ardor distance to a location on the travel path. 
         [0034]      FIG. 4  illustrates an example method  400  for determining a potential risk. Method  400  begins with a generation of a time-based geofence (step  410 ). The term “geofence” refers to a selected or defined geographical area. For example, server  110  may store geographical areas surrounding a number of known locations. Thus, for example, a geofence may be generated lot a geographical area surrounding an intermediary shipping facility that is on a shipped object&#39;s scheduled travel path. Moreover, a geofence can be generated for new locations. For example, a geofence may be generated for an area (e.g., 1 mile, 5 miles, 10 miles) surrounding the destination of a shipped object. 
         [0035]    A “time-based geofence” refers to a geofence that is associated with one or more times. In some embodiments, a time is automatically associated with the generated geofence. For example, a time that is a predetermined amount of time before an estimated delivery time, or an estimated arrival to an intermediary geofence along a scheduled travel path, may be associated with the generated geofence. 
         [0036]    Alternatively, the time associated with a geofence may be selected by as user. For example, as depicted in  FIG. 8 , a user may be provided with a menu  800  that enables the user to indicate which geofence a time-based rule will apply to (e.g., a destination geofence or an intermediary geofence), what type of action is associated with the geofence (e.g., a shipped object entering a geofence or a shipped object exiting a geofence), whether to associate the geofence with a time (e.g., a time-based event), and whether the time should be a specific time or a specified number of hours from an event (e.g., a specified number of hours after the geofence is created, a specified number of hours after a journey for the shipped object begins, or a specified number of hours after an estimated time of arrival to, or departure from, the geofence). For example, as depicted in  FIG. 9 , a user may be provided with a menu  900  that enables the user to enter a time, a time zone, and a date to associate with a geofence. 
         [0037]    In some embodiments, a determination is made that sensor device  120  has not satisfied a time based event (step  420 ). For example, a determination may be made that sensor device  120  has not reached any location within the time-based geofence by the time associated with the time-based geofence. Alternatively, for example, a determination may be made that sensor device  120  has not exited an area associated with the time-based geofence by the time associated with the time-based geofence. 
         [0038]    To determine whether the sensor device  120  has not reached any location within the time-based geofence by the time associated with the time-based geofence, a history of the past locations of the sensor device  120  may be analyzed to determine if any location falls within an area associated with the time-based geofence by the time associated with the time-based geofence. Alternatively, for example, each location capture associated with the sensor device  120  may be compared to an area associated with the time-based geofence and a flag may be cleared once a location associated with the sensor device  120  falls within an area associated with the time-based geofence; a determination may be made as to whether the flag has been cleared at or before the time associated with the time-based geofence. 
         [0039]    To determine whether the sensor device  120  has not exited an area associated with the time-based geofence by the time associated with the time-based geofence, a history of the past locations of the sensor device  120  may be analyzed to determine if any location falls outside of an area associated with the time-based geofence by the time associated with the time-based geofence. Alternatively, for example, each location capture associated with the sensor device  120  may be compared to an area associated with the based geofence and a flag may be cleared once a location associated with the sensor device  120  falls outside an area associated with the time-based geofence; determination may be made as to whether the flag has been cleared at or before the time associated with the time-based geofence. 
         [0040]    In some embodiments, a potential risk is determined based on a failure of the sensor device  120  to satisfy the time-based event (step  430 ). While the above process is explained with reference to one time-based geofence and one-time based event, n are than one time-based geofence used for a shipped object and one that one time-based event may be applied to a time-based geofence. For example, a geofence may be generated and associated with both an expected entrance time and an expected exit time. 
         [0041]      FIG. 5  illustrates an example method  500  for determining are estimated distance or time to reach a destination or geofence for a shipped object. Method  500  begins with a determination of a location of a sensor device  120  associated with the shipped object (step  510 ). For example, server  110  may store a database which links a shipped object to a particular sensor device  120  being shipped with the shipped object. In some embodiments, sensor device  120  may automatically transmit server  110  its location, for example, at predetermined intervals. In such embodiments, a latest received location may be used. In other embodiments, server  110  may send sensor device  120  a location request and, in response to the location request, may receive a location of the sensor device  120 . 
         [0042]    In some embodiments, server  110  then calculates a distance and/or time to reach a shipped object&#39;s destination or a geofence before the destination (step  520 ). For example, server  110  may analyze past shipment data associated with the current location (e.g., the origin or an intermediary location determined from the location of the sensor device  120 ) and the destination or geofence location. For example, an estimated time and/or distance between a current location and a destination or geofence location may be determined based on past travel routes used for shipping an object from the current location to the destination or geofence location, based on, for example, an average time and/or distance of the past travel routes. 
         [0043]    Other data may also be utilized to determine an estimated distance and/or time. For example, server  110  may determine from a data source  150  that one or more past travel routes are unavailable (e.g., due to road construction or inclement weather). Based on this additional data, some past travel routes may be ignored. Alternatively, for example, a weighted average may be calculated by assigning each past travel route a probability associated with the probability that the travel route will be used for the current shipped object. 
         [0044]    In some embodiments, server  110  then transmits the calculated distance and/or time to user interface  130  (step  530 ). User interface  130  may enable a user or an administrator to view the estimated distance and/or time for a shipped object to reach a destination or geofence location. 
         [0045]      FIG. 6  illustrates an example method  600  for implementing a panic button. Method  600  begins with a determination of a potential risk associated with a shipped object (step  610 ). For example, as discussed above, a sensor device  120  may fail to enter or exit a time-based geofence by a particular time and a determination may be made that the sensor device  120  is associated with one or more shipped objects. Alternatively, for example, sensor data from sensor device  120  may indicate a risk based on, for example, a high or low temperature, a high or low acceleration, a high or low pressure, or a high or low speed. In some embodiments, the determination of a potential risk is made at the server  110 . In other embodiments, the determination of a potential risk is made at the sensor device  120 . 
         [0046]    In some embodiments, based on the potential risk, server  110  enables a panic button in the user interface  130  (step  620 ). In some embodiments, the panic button may only be enabled when a potential risk is received from sensor device  120  and one or more additional conditions are satisfied. The one or more additional conditions may include, for example: the shipped object being high value or the shipped object containing perishable material. However, in other embodiments, a panic button may always be enabled in user interface  130  for one or more users of the user interface  130 . Additionally, far example, an administrator may have access to the panic button even without an indication of a potential risk from sensor device  120 . As discussed above, the panic button may be a selectable visual indication that a panic, mode may be entered. A panic button may be selected in a number of ways, including, for example, a mouse click, a finger touch (e.g., when a user interlace is displayed on a touch-sensitive screen), a textual entry, a spoken command, etc. 
         [0047]    In some embodiments, server  110  receives an indication that the panic button has been selected (step  630 ). In response to the indication that the panic button has been selected, server  110  may perform a number of actions, either simultaneously or in sequence. For example, server  110  may perform one or more of the following actions: transmit a panic mode indication to sensor device  120  (step  640 ), notify one or more parties associated with the shipped object (step  650 ), disable a delay of location data available to the user interface  130  (step  660 ), and/or create a customer support case (step  670 ). 
         [0048]    At step  640 , sensor device  120  may receive the panic mode indication from the server  110 . As discussed above, sensor device  120  may have a predetermined rate of transmitting its location and/or other environmental parameters (e.g., battery life, temperature, humidity, pressure, light, acceleration, or motion) to server  110 . As discussed in more detail below, in response to receiving the panic mode indication, sensor device  120  may increase the rate in which it transmits its location/or other environmental parameters to server  110  for example, for a predetermined amount of or until another indication is received that panic mode has been resolved. In some embodiments, the increased rate is predetermined (e.g., twice the rate of when panic mode is not active or as frequently as the device supports transmission). In other embodiments, the increased rate of location and environmental transmissions is received from server  110 . 
         [0049]    At step  650 , the parties that are notified of the panic mode indication may include, for example, company security, a legal department, a police department closest to the shipped object&#39;s location, one or more monitoring, or intervention groups, and/or all participants who have signed up to receive notifications regarding a particular shipped object (e.g., a shipped&#39;s object&#39;s sender and/or receiver). 
         [0050]    To increase security for certain carriers, location data that is displayed in user interface  130  may ordinarily be delayed (e.g., by 30 minutes) when a panic mode is not active. At step  660 , the delay may be removed such that the user interface  130  displays the latest known location data of a shipped object without any intentional delay for a predetermined amount of time or until another indication is received that panic mode has been resolved. 
         [0051]    At step  670 , a customer support case may be created. A customer support case may be used to ensure that any issues associated with the shipped object are handled and tracked, including, for example, any billing issues that arise by a shipped object being delayed, lost, stolen, or damaged. 
         [0052]    In some embodiments, a determination may be made that the risk associated with the shipped object has abated (step  680 ). For example, if the potential risk was associated with a determination that a shipped object has not reached a time-based geofence by a predetermined time, a determination that the risk has abated may occur if the shipped object reaches the time-based geofence. Alternatively, or additionally, a determination may be made that the risk associated with the shipped object has abated if the shipped object is found at a secure location. For example, a determination may be made that the risk has abated because the shipped object is located at a known shipping facility and was delayed due to weather. Alternatively, or additionally, a determination may be made that the risk associated with the shipped object has abated if a particular button in user interface  130  is selected. 
         [0053]    In some embodiments, based on the determination that the risk has abated, panic mode is resolved (step  690 ). For example, any changed settings that were made in steps  640 - 670  may be undone. Moreover, while the above process explains a single instance of a panic mode, a given shipped object may be associated with a panic mode more than once. That is, once a panic mode has been resolved, a panic mode may be entered into again. 
         [0054]      FIG. 7  illustrates an example method  700  for implementing a panic button. Method  700  begins with a sensor device  120  reporting sensor data to server  110  at a predetermined time interval (step  710 ). For example, as discussed above, sensor device  110  may store a predetermined time interval to use during normal operation. 
         [0055]    In some embodiments, sensor device  120  receives a panic mode indication from server  110  (step  720 ). Based on the panic mode indication, sensor device  120  may alter the time interval at which it reports sensor data (step  730 ). For example, as discussed above, sensor device  120  may store an altered reporting time interval associated with panic mode or may receive an altered reporting time interval from server  110 . 
         [0056]    Sometime after receiving the panic mode indication, sensor device  120  may receive an indication from server  110  that panic mode has been resolved (step  740 ). Based on the indication that panic mode has been resolved, sensor device  120  may resume reporting sensor data at its predetermined time interval for normal operation (step  750 ). 
         [0057]    While various operations are described above as being performed by server  110 , in some alternative embodiments sensor device  120  performs some of or all of the operations described above as being performed by server  110 . For example, a determination that a sensor device  130  has failed to satisfy a time-based geofence may be made by server  110  or by sensor device  120 . 
         [0058]    Embodiments and all of the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of them. Embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium, e.g., a machine readable storage device, a machine readable storage medium, a memory device, or a machine readable propagated signal, for execution by, or to control the operation of, data processing apparatus. 
         [0059]    The term “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of them. A propagated signal is at artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, which as generated to encode information for transmission to suitable receiver apparatus. 
         [0060]    A computer program (also referred to as a program, software, an application, a software application, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to as file in a tile system. A program can be stored in a portion of a file that holds other p of rams car data (e.g., one or more scripts stored in as markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g. files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network. 
         [0061]    The processes and logic flows described in this specification (e.g.,  FIGS. 4-7 ) can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gats array) or an ASIC (application specific integrated circuit). While disclosed processes include particular process flows, alternative flows or orders are also possible in alternative embodiments. 
         [0062]    Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer, Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to, a communication interface to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. 
         [0063]    Moreover, a computer can be embedded in another device. Information card suitable for embodying computer program instructions and data include all forms of non-volatile memory including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVDROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. 
         [0064]    To provide for interaction with a user, embodiments of the invention can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. 
         [0065]    Embodiments can be implemented in a computing system that includes a back end component. e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g. a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the invention, or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet. 
         [0066]    The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client/server relationship to each other. 
         [0067]    Certain features which, for clarity, are described in this specification in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features which, for brevity, are described in the context of a single embodiment, may also be provided in multiple embodiments separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination variation of a subcombination. 
         [0068]    Particular embodiments have been described. Other embodiments are within the scope of the following claims.