Patent Publication Number: US-11652514-B1

Title: Packet specific beam-forming network

Description:
TECHNICAL FIELD 
     This application relates generally to wireless communications. 
     BACKGROUND 
     In communication systems, and more specifically in wireless mesh networks, some transmission paths with multiple hops may exhibit poor latency performance that may not be tolerated by certain types of packets requiring a certain quality of service (QoS) or restricted by some real-time constraints, while other packets can do with a higher latency that is still good enough for certain applications. Packets requiring low latency may suffer delays as a result of other packets sharing the same transmission path and causing congestion. Wireless communication systems may employ beamforming techniques that allow for higher system gain, which in turn may boost data rates and/or allow for greater transmission distances given a certain transmission power. 
     SUMMARY 
     Example embodiments described herein have innovative features, no single one of which is indispensable or solely responsible for their desirable attributes. The following description and drawings set forth certain illustrative implementations of the disclosure in detail, which are indicative of several exemplary ways in which the various principles of the disclosure may be carried out. The illustrative examples, however, are not exhaustive of the many possible embodiments of the disclosure. Without limiting the scope of the claims, some of the advantageous features will now be summarized. Other objects, advantages and novel features of the disclosure will be set forth in the following detailed description of the disclosure when considered in conjunction with the drawings, which are intended to illustrate, not limit, the invention. 
     One embodiment is a system operative to wirelessly transport data from a first communication node to a second communication node using multiple beam directions and based on packet-related information, comprising: a first communication node comprising a first multi-beam subsystem; a second communication node comprising a second multi-beam subsystem; and a plurality of intermediary nodes including at least first and second intermediary nodes, wherein the system is configured to: transmit a first packet associated with a first packet-related information via a first path comprising the first communication node, the first intermediary node, and the second communication node, in which in facilitation of said transmission: the first multi-beam subsystem is configured to use a first beam direction, and the second multi-beam subsystem is configured to use a second beam direction; and then transmit a second packet associated with a second packet-related information via a second path comprising the first communication node, the second intermediary node, and the second communication node, in which immediately prior to said transmission of the second packet: the first multi-beam subsystem is configured to switch into a third beam direction operative to facilitate transmission toward the second intermediary node, and the second multi-beam subsystem is configured to switch into a fourth beam direction operative to receive the transmission from one of the intermediary nodes. 
     One embodiment is a method for wirelessly transporting data from a first communication node to a second communication node using multiple beam directions and based on packet-related information, comprising: transmitting a first packet associated with a first packet-related information via a first path comprising a first communication node, a first intermediary node, and a second communication node, using a first beam direction; determining that a second packet associated with a second packet-related information is about to be transmitted; switching, as a result of said determining, into another beam direction operative to facilitate transmission toward a second intermediary node; and transmitting the second packet associated with the second packet-related information via a second path comprising the first communication node, the second intermediary node, and the second communication node. 
     One embodiment is a system operative to wirelessly transport data from a first communication node to a second communication node using multiple beam directions and based on packet-related information, comprising: a first communication node comprising a first multi-beam subsystem; and a second communication node; wherein the system is configured to: transmit a first packet associated with a first packet-related information via a first path comprising the first and the second communication nodes, in which in facilitation of said transmission: the first multi-beam subsystem is configured to use a first beam direction; and then transmit a second packet associated with a second packet-related information via a second path comprising the first and the second communication nodes, in which: (i) immediately prior to said transmission of the second packet: the first multi-beam subsystem is configured to switch into another beam direction, and (ii) said switching associated with the first communication node is done based on the second packet being associated with the second packet-related information, and on a packet-by-packet basis. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a fuller understanding of the nature and advantages of the concepts disclosed herein, reference is made to the detailed description of preferred embodiments and the accompanying drawings. The embodiments are herein described by way of example only, with reference to the accompanying drawings. No attempt is made to show structural details of the embodiments in more detail than is necessary for a fundamental understanding of the embodiments. 
         FIG.  1 A  illustrates one embodiment of a wireless communication network operative to wirelessly transport packets between the different nodes of the network. 
         FIG.  1 B  illustrates one embodiment of one possible transmission path utilized by the wireless communication network to transport packets wirelessly. 
         FIG.  1 C  illustrates one embodiment of another possible transmission path utilized by the wireless communication network to transport packets wirelessly. 
         FIG.  1 D  illustrates one embodiment of beam-forming elements operating in at least some nodes of the network and generating several possible beam combinations. 
         FIG.  1 E  illustrates one embodiment of packets being wirelessly transported via the various paths of the network and on a packet-by-packet basis. 
         FIG.  2 A  illustrates one embodiment of a beam switching subsystem within at least some of the nodes of the network. 
         FIG.  2 B  illustrates one embodiment of possible beam combinations generated by the beam switching subsystem. 
         FIG.  3    illustrates one embodiment of a phased-array beamforming subsystem within at least some of the nodes of the network and some possible beam combinations generated by the beamforming subsystem. 
         FIG.  4    illustrates one embodiment of a method for wirelessly transporting data from a first communication node to a second communication node using multiple beam directions and based on packet-related information. 
     
    
    
     DETAILED DESCRIPTION 
       FIG.  1 A  illustrates one embodiment of a wireless communication network operative to wirelessly transport packets between the different nodes of the network. Wireless communication node  10 node1 may transmit/receive packets to/from both node  11 inter1 via communication link  12 link1 and to/from node  11 inter2 via communication link  12 link3. In a similar fashion, nodes  11 inter1 and  10 node2 wirelessly exchange packets via communication link  12 link2, nodes  11 inter3 and  10 node2 wirelessly exchange packets via communication link  12 link4, and nodes  11 inter3 and  11 inter2 wirelessly exchange packets via communication link  12 link5. The communication network may be a wireless mesh network, a backhaul network, a relay network, or a combination thereof. The communication network may be based on, or derived from, cellular transmission standards such as LTE, 4G, and 5G, WiFi (IEEE 802.11) transmission standards, or proprietary standards. The communication network may use licensed frequencies in the sub 1 GHz bands, 1.7-2.3 GHz bands, and 2.5-3.6 GHz bands, or it may use unlicensed frequencies in the 2.4 GHz band and 5 GHz bands. Millimeter-wave frequencies in the 30-70 GHz bands can also be used, as well as other frequency bands, provided that multiple radio-frequency beams can be generated by at least some of the communication nodes in conjunction with packet transmission and via beam forming/switching antenna configurations  10 BF 1 ,  10 BF 2  associated with at least some of the nodes. Nodes  11 inter are intermediary nodes in the sense that any packet going from  10 node1 to  10 node2 has to travel via at least some of the intermediary nodes. The network topology depicted is by way of example and not limitation, provided that there are at least two different paths to propagate packets from  10 node1 to  10 node2, and provided that beam forming/switching antenna configurations  10 BF 1 ,  10 BF 2  are available in support of the at least two different paths. 
       FIG.  1 B  illustrates one embodiment of one possible transmission path utilized by the wireless communication network to transport packets wirelessly. The one possible transmission path  13 path1 comprises the nodes  10 node1,  11 inter1 and  10 node2. Other nodes may also be included in path  13 path1. 
       FIG.  1 C  illustrates one embodiment of another possible transmission path utilized by the wireless communication network to transport packets wirelessly. The another possible transmission path  13 path2 comprises the nodes  10 node1,  11 inter2,  11 inter3, and  10 node2. Other nodes may also be included in path  13 path2. Other transmission paths are also possible, provided that they include the nodes  10 node1 and  10 node2, and a new combination of intermediary nodes  11 inter connecting them. The intermediary nodes  11 inter may be excusive for each path, but, alternatively, any intermediary node may serve more than one path. Each of the depicted paths  13 path1 and  13 path2 have an exclusive set of intermediary nodes by way of example. 
       FIG.  1 D  illustrates one embodiment of beam-forming elements operating in at least some nodes of the network and generating several possible beam combinations. Beam forming/switching element  10 BF 1  of  10 node1 transmits/receives packets to/from  11 inter1 via a dedicated beam  10 beam1 that is directed toward  11 inter1, and transmits/receives packets to/from  11 inter2 via another dedicated beam  10 beam3 that is directed toward  11 inter2. Beam forming/switching element  10 BF 2  of  10 node2 may transmit/receive packets to/from  11 inter1 via a dedicated beam  10 beam2 that is directed toward  11 inter1, and may transmit/receive packets to/from  11 inter3 via another dedicated beam  10 beam4 that is directed toward  11 inter2. When transmitting a packet via  13 path1, the packet is transmitted by  10 BF 1  via  10 beam1, and may be received by  10 BF 2  via  10 beam2. When transmitting a packet via  13 path2, the packet is transmitted by  10 BF 1  via  10 beam3, and may be received by  10 BF 2  via  10 beam4. Transmissions via  10 beam1 may occur in parallel to transmissions via  10 beam3, or may occur in conjunction with a time division scheme so as to allow only one of the beams  10 beam1,  10 beam3 to be active at a time. The purpose of the beams  10 beam is to increase system gain, increase bit rates, extend transmission distances, lower transmission power, improve frequency reuse, lower inter-node interferences, or any combination thereof. 
       FIG.  1 E  illustrates one embodiment of packets being wirelessly transported via the various paths of the network and on a packet-by-packet basis. Packet  201 , which may be an Internet Protocol (IP) packet, is associated with packet information  201 info that may be related to the type of the packet (e.g., Transmission Control Protocol/Internet Protocol (TCP/IP), User Datagram Protocol (UDP), or Real-time Transport Protocol (RTP)), size of the packet, a Quality of Service (QoS) level associated with the packet, a latency requirement of the packet, a functionality associated with the packet (e.g., VoIP, Video, non-real-time), or combinations thereof. In a similar fashion, packet  202  is associated with packet information  202 info and packet  203  is associated with packet information  203 info. The packet information (e.g.,  201 info) may be embedded in the respective packet ( 201  in this case) in a form of a certain field, it may be transmitted/obtained separately to the respective packet, it may be derived by the system based on packet metrics, it can be obtained in other ways, or in a combination of several such ways. The packet information may be related to a single packet (as depicted by way of example), or to several packets associated with one another. 
     The system may conclude, based on  202 info, that packet  202  does not require fast transport between  10 node1 and  10 node2, and therefore, the system may reach a decision ( 202 decide) to use path  13 path2 as the path for transmitting packet  202 , which, for example, may be a slower path than  13 path1. As a direct result of such decision  202 decide, the system, using  10 BF 1 , then switches/directs/synthesizes ( 202 switch) the transmission of packet  202  via  10 beam3, which facilitates transmission ( 202 Tx) in conjunction with  13 path2 and  11 inter2.  10 node2, via  10 BF 2 , may then sense a direction from which packet  202  is arriving, and receive packet  202  via  10 beam4, or packet  202  may be received omnidirectionally. The time from the decision to switch  202 decide, through the completion of the switching  202 switch action, and actual transmission of the packet  202 Tx must be short enough to deal with network-level timing, and in general should be kept below 10 microseconds, which is readily achievable using solid state antenna switching/directing/synthesizing techniques. The system may then conclude, based on  203 info, that packet  203  needs to be transported as fast as possible between  10 node1 and  10 node2, and therefore, the system may reach a decision ( 203 decide) to use path  13 path1 as the path for transmitting packet  203 , which, for example, may be a faster path than  13 path2. As a direct result of the decision  203 decide, the system, using again  10 BF 1 , then switches/directs/synthesizes ( 203 switch) the transmission of packet  203  via  10 beam1, which facilitates transmission ( 203 Tx) in conjunction with  13 path1 and  11 inter1.  10 node2, again via  10 BF 2 , may then sense a direction from which packet  203  is arriving, and receive packet  203  via  10 beam2, or packet  203  may be received omnidirectionally. In reality, different packets needs to be switched to the different paths at a very high rate, which may be higher than 10,000 packets per second, and as a result the beam configurations  10 beam may change thousands of times per second as the packets, of different types, stream through the network. Movement of packets may also be in the opposite direction (from  10 node2 to  10 node1) in a similar fashion and switching rapidly between the different paths  13 path. 
     In one embodiment, small packets requiring low latencies (e.g., packet  203 ) may be blocked by bigger packets that can tolerate higher latencies (e.g., packet  202 ), and therefore, by diverting the bigger tolerant packets  202  into path  13 path2, the “fast lane”  13 path1 is kept “clear” for the smaller packets  203 ,  201  to propagate fast. 
       FIG.  2 A  illustrates one embodiment of a beam switching subsystem within at least some of the nodes of the network. Beam switching subsystem  10 BF 1  comprises several antennas  10 BF 1 ant (eight are depicted by way of example), an RF switching component/s 1SW (e.g., PIN diodes). A computer 1CPU controls, using 1SW, the switching  202 switch,  203 switch between antennas  10 BF 1 ant 1  and  10 BF 1 ant 2  based on the packet-by-packet decisions made  202 decide,  203 decide. The decisions may be done using 1CPU, or using another computer in  10 node1. Components such as RF power amplifiers 1PA for RF transmission are depicted, but other components, e.g. low-noise amplifiers (LNAs) for reception, and other components are not shown for the sake of simplicity. The computer 1CPU can include a processor that executes software and/or instructions (e.g., stored in memory operably coupled to the computer 1CPU) to control the switching  202 switch,  203 switch and/or to perform other functions as described herein. 
       FIG.  2 B  illustrates one embodiment of possible beam combinations generated by the beam switching subsystem  10 BF 1 .  10 beam1 is generated by antenna  10 BF 1 ant 1 , and  10 beam3 is generated by antenna  10 BF 1 ant 2 . 
       FIG.  3    illustrates one embodiment of a phased-array beamforming subsystem  10 BF within at least some of the nodes of the network and some possible beam combinations generated by the beamforming subsystem.  10 beam1 is generated by adjusting relative transmission phases between antennas  1 AN 1 ,  1 AN 2 ,  1 AN 3 , and  10 beam3 is generated by re-adjusting relative transmission phases between antennas  1 AN 1 ,  1 AN 2 ,  1 AN 3 . 
     One embodiment is a system operative to wirelessly transport data from a first communication node to a second communication node using multiple beam directions and based on packet-related information, comprising: a first communication node  10 node1 ( FIG.  1 A ) comprising a first multi-beam subsystem  10 BF 1 ; a second communication node  10 node2 comprising a second multi-beam subsystem  10 BF 2 ; and a plurality of at least a first  11 inter1 and a second  11 inter2 intermediary nodes. 
     It should be noted that multiple beam functionality, or the term multibeam herein, can refer to temporally sequential generation of energy beams, each principally directed towards a respective spatial direction, or, the simultaneous generation of a plurality of beams, each principally directed towards a respective spatial direction. In the first example, the system may comprise one or more RF antenna or source elements configured and arranged to generate and transmit RF energy encoding communication signals along a direction, e.g., towards or having a main energy lobe as seen on a Bode plot, directed at an intended receiver, e.g., towards the East with respect to the transmitting element(s). The system may thus transmit wireless communications towards the receiver at an Easterly direction. The system may then at a later time generate and direct wireless energy in a lobe directed to the North to be received best by an intended other receiver in a Northerly direction, and so on. We note that the system can operate in an interleaved mode whereby a first single main lobe as described is generated in a first direction of interest towards a first receiver, interleaved with or alternatingly in time with a second single main lobe generated in a second direction of interest towards a second receiver. In the second example, a phased array of a plurality of RF antennas or source elements is configured and arranged to generate two or more temporally co-existing (simultaneous) energy lobes as seen on a Bode plot, which can be directed towards two or more corresponding spatial directions so as to simultaneously deliver communication signals or packets to two or more receivers located at the two or more spatial directions with respect to the transmitter. Thus, any of the above methods of directing energy towards multiple receivers, in respective directions with respect to the transmitter, are possible with the present multibeam feature. 
     In one embodiment, the system is configured to: transmit  201 Tx a first packet  201  ( FIG.  1 E ) associated with a first packet-related information via a first path  13 path1 ( FIG.  1 B ) comprising the first communication node  10 node1, the first intermediary node  11 inter1, and the second communication node  10 node2, in which in facilitation of said transmission: the first multi-beam subsystem  10 BF 1  is configured to use a first beam direction  10 beam1 ( FIG.  1 D ), and the second multi-beam subsystem  10 BF 2  is configured to use a second beam direction  10 beam2; and then transmit  202 Tx a second packet  202  ( FIG.  1 E ) associated with a second packet-related information via a second path  13 path2 ( FIG.  1 C ) comprising the first communication node  10 node1, the second intermediary node  11 inter2, and the second communication node  10 node2, in which immediately prior to said transmission of the second packet: the first multi-beam subsystem  10 BF 1  is configured to switch  202 switch ( FIG.  1 E ) into a third beam direction  10 beam3 ( FIG.  1 D ) operative to facilitate transmission toward the second intermediary node  11 inter2, and the second multi-beam subsystem  10 BF 2  is configured to switch into a fourth beam direction  10 beam4 operative to receive the transmission from one of the intermediary nodes (e.g.,  11 inter3). 
     In one embodiment, said switching  202 switch associated with the first communication node  10 node1 is done based on the second packet  202  being associated with the second packet-related information, and on a packet-by-packet basis. 
     In one embodiment, the system is further configured to transmit  203 Tx ( FIG.  1 E ), via the first path  13 path1, a third packet  203  ( FIG.  1 E ) having a different packet-related information than the second packet  202 , in which immediately prior to said transmission: the first multi-beam subsystem  10 BF 1  switches back  203 switch ( FIG.  1 E ) to a state facilitating transmission via the first path. 
     In one embodiment, said packet-related information is conveyed in the packets. In one embodiment, said packet-related information is out-of-band of the packets. In one embodiment, said packet-related information is derived from type and/or size of data carried by the packets. 
     In one embodiment, each of the communication nodes  10 node switches beam directions asynchronously with the other nodes, in which said switching is done on a packet-by-packet basis. 
     In one embodiment, the packet-related information is associated with different types of packets that comprise a type associated with at least one of: (i) TCP/IP, (ii) UDP, and/or (iii) RTP. 
     In one embodiment, the packet-related information is associated with different types of applications that comprise an application associated with at least one of: (i) voice over IP (VoIP), (ii) video streaming, and/or (iii) non-latency critical applications. 
     In one embodiment, said switching  202 switch associated with the first communication node  10 node1 occurs in less than 10 (ten) microsecond from determining  202  decide ( FIG.  1 E ) the association of the second packet  202  with the second packet-related information. 
     In one embodiment, said multi-beam subsystem  10 BF 1 ,  10 BF 2  is of a type comprising associated with at least one of: (i) beam switching ( FIG.  2 A ,  FIG.  2 B ), (ii) phased array ( FIG.  3   ), and/or (iii) butler matrix. 
     In one embodiment, the first path  13 path1 is associated with a first latency that is lower than a second latency associated with the second path  13 path2, in which said first packet  201  is determined to require a better (e.g., lower) latency than a latency required by the second packet  202 , and in which said determination is based on the packet-related information. 
     In one embodiment, the transmissions  201 Tx,  202 Tx,  203 Tx are associated with at least one of: (i) WiFi transmissions, (ii) cellular transmissions, (iii) micro-waves transmissions, and/or (iv) millimeter-wave transmissions. 
     In one embodiment, said multi-beam subsystems are operative to increase a system gain associated with the system by at least 10 (ten) decibel (dB). 
       FIG.  4    illustrates one embodiment of a method for wirelessly transporting data from a first communication node to a second communication node using multiple beam directions and based on packet-related information. The method includes: in step  1001 , transmitting  201 Tx a first packet  201  ( FIG.  1 E ) associated with a first packet-related information via a first path  13 path1 ( FIG.  1 B ) comprising a first communication node  10 node1, a first intermediary node  11 inter1, and a second communication node  10 node2, using a first beam direction  10 beam1 ( FIG.  1 D ). In step  1002 , determining that a second packet  202  ( FIG.  1 E ) associated with a second packet-related information is about to be transmitted. In step  1003 , switching  202 switch ( FIG.  1 E ), as a result of said determination, into another beam direction  10 beam3 ( FIG.  1 D ) operative to facilitate transmission toward a second intermediary node  11 inter2. In step  1004 , transmitting  202 Tx the second packet  202  ( FIG.  1 E ) associated with the second packet-related information via a second path  13 path2 ( FIG.  1 C ) comprising the first communication node  10 node1, the second intermediary node  11 inter2, and the second communication node  10 node2. 
     In one embodiment, said switching is momentary and for the purpose of transmitting said second packet associated with the second packet-related information, in which the method further comprises: switching back to the first path for a next packet in line for transmission. 
     In one embodiment, the second communication node is a destination of both the first and second packets. In one embodiment, the second communication node is a final destination of both the first and second packets. 
     In one embodiment, the communication nodes are part of a wireless mesh topology, in which the first path and the second path represents two different ways of propagating the packets from the first to the second communication nodes. 
     One embodiment is a system operative to wirelessly transport data from a first communication node to a second communication node using multiple beam directions and based on packet-related information, comprising: a first communication node  10 node1 ( FIG.  1 A ) comprising a first multi-beam subsystem  10 BF 1 ; and a second communication node  10 node2. 
     In one embodiment, the system is configured to: transmit  201 Tx a first packet  201  ( FIG.  1 E ) associated with a first packet-related information via a first path  13 path1 ( FIG.  1 B ) comprising the first and the second communication nodes, in which in facilitation of said transmission: the first multi-beam subsystem  10 BF 1  is configured to use a first beam direction  10 beam1 ( FIG.  1 D ); and then transmit  202 Tx a second packet  202  ( FIG.  1 E ) associated with a second packet-related information via a second path  13 path2 ( FIG.  1 C ) comprising the first and the second communication nodes, in which: (i) immediately prior to said transmission of the second packet: the first multi-beam subsystem  10 BF 1  is configured to switch  202 switch ( FIG.  1 E ) into another beam direction  10 beam3 ( FIG.  1 D ), and (ii) said switching  202 switch associated with the first communication node  10 node1 is done based on the second packet  202  being associated with the second packet-related information, and on a packet-by-packet basis. 
     In this description, numerous specific details are set forth. However, the embodiments/cases of the invention may be practiced without some of these specific details. In other instances, well-known hardware, materials, structures and techniques have not been shown in detail in order not to obscure the understanding of this description. In this description, references to “one embodiment” and “one case” mean that the feature being referred to may be included in at least one embodiment/case of the invention. Moreover, separate references to “one embodiment”, “some embodiments”, “one case”, or “some cases” in this description do not necessarily refer to the same embodiment/case. Illustrated embodiments/cases are not mutually exclusive, unless so stated and except as will be readily apparent to those of ordinary skill in the art. Thus, the invention may include any variety of combinations and/or integrations of the features of the embodiments/cases described herein. Also herein, flow diagrams illustrate non-limiting embodiment/case examples of the methods, and block diagrams illustrate non-limiting embodiment/case examples of the devices. Some operations in the flow diagrams may be described with reference to the embodiments/cases illustrated by the block diagrams. However, the methods of the flow diagrams could be performed by embodiments/cases of the invention other than those discussed with reference to the block diagrams, and embodiments/cases discussed with reference to the block diagrams could perform operations different from those discussed with reference to the flow diagrams. Moreover, although the flow diagrams may depict serial operations, certain embodiments/cases could perform certain operations in parallel and/or in different orders from those depicted. Moreover, the use of repeated reference numerals and/or letters in the text and/or drawings is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments/cases and/or configurations discussed. Furthermore, methods and mechanisms of the embodiments/cases will sometimes be described in singular form for clarity. However, some embodiments/cases may include multiple iterations of a method or multiple instantiations of a mechanism unless noted otherwise. For example, when a controller or an interface are disclosed in an embodiment/case, the scope of the embodiment/case is intended to also cover the use of multiple controllers or interfaces. 
     Certain features of the embodiments/cases, which may have been, for clarity, described in the context of separate embodiments/cases, may also be provided in various combinations in a single embodiment/case. Conversely, various features of the embodiments/cases, which may have been, for brevity, described in the context of a single embodiment/case, may also be provided separately or in any suitable sub-combination. The embodiments/cases are not limited in their applications to the details of the order or sequence of steps of operation of methods, or to details of implementation of devices, set in the description, drawings, or examples. In addition, individual blocks illustrated in the figures may be functional in nature and do not necessarily correspond to discrete hardware elements. While the methods disclosed herein have been described and shown with reference to particular steps performed in a particular order, it is understood that these steps may be combined, sub-divided, or reordered to form an equivalent method without departing from the teachings of the embodiments/cases. Accordingly, unless specifically indicated herein, the order and grouping of the steps is not a limitation of the embodiments/cases. 
     Embodiments/cases described in conjunction with specific examples are presented by way of example, and not limitation. Moreover, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, it is intended to embrace all such alternatives, modifications and variations that fall within the spirit and scope of the appended claims and their equivalents. 
     The invention should not be considered limited to the particular embodiments described above. Various modifications, equivalent processes, as well as numerous structures to which the invention may be applicable, will be readily apparent to those skilled in the art to which the invention is directed upon review of this disclosure. The above-described embodiments may be implemented in numerous ways. One or more aspects and embodiments involving the performance of processes or methods may utilize program instructions executable by a device (e.g., a computer, a processor, or other device) to perform, or control performance of, the processes or methods. 
     In this respect, various inventive concepts may be embodied as a non-transitory computer readable storage medium (or multiple non-transitory computer readable storage media) (e.g., a computer memory of any suitable type including transitory or non-transitory digital storage units, circuit configurations in Field Programmable Gate Arrays or other semiconductor devices, or other tangible computer storage medium) encoded with one or more programs that, when executed on one or more computers or other processors, perform methods that implement one or more of the various embodiments described above. When implemented in software (e.g., as an app), the software code may be executed on any suitable processor or collection of processors, whether provided in a single computer or distributed among multiple computers. 
     Further, it should be appreciated that a computer may be embodied in any of a number of forms, such as a rack-mounted computer, a desktop computer, a laptop computer, or a tablet computer, as non-limiting examples. Additionally, a computer may be embedded in a device not generally regarded as a computer but with suitable processing capabilities, including a Personal Digital Assistant (PDA), a smartphone or any other suitable portable or fixed electronic device. 
     Also, a computer may have one or more communication devices, which may be used to interconnect the computer to one or more other devices and/or systems, such as, for example, one or more networks in any suitable form, including a local area network or a wide area network, such as an enterprise network, and intelligent network (IN) or the Internet. Such networks may be based on any suitable technology and may operate according to any suitable protocol and may include wireless networks or wired networks. 
     Also, a computer may have one or more input devices and/or one or more output devices. These devices can be used, among other things, to present a user interface. Examples of output devices that may be used to provide a user interface include printers or display screens for visual presentation of output and speakers or other sound generating devices for audible presentation of output. Examples of input devices that may be used for a user interface include keyboards, and pointing devices, such as mice, touch pads, and digitizing tablets. As another example, a computer may receive input information through speech recognition or in other audible formats. 
     The non-transitory computer readable medium or media may be transportable, such that the program or programs stored thereon may be loaded onto one or more different computers or other processors to implement various one or more of the aspects described above. In some embodiments, computer readable media may be non-transitory media. 
     The terms “program,” “app,” and “software” are used herein in a generic sense to refer to any type of computer code or set of computer-executable instructions that may be employed to program a computer or other processor to implement various aspects as described above. Additionally, it should be appreciated that, according to one aspect, one or more computer programs that when executed perform methods of this application need not reside on a single computer or processor, but may be distributed in a modular fashion among a number of different computers or processors to implement various aspects of this application. 
     Computer-executable instructions may be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that performs particular tasks or implement particular abstract data types. The functionality of the program modules may be combined or distributed as desired in various embodiments. 
     Also, data structures may be stored in computer-readable media in any suitable form. For simplicity of illustration, data structures may be shown to have fields that are related through location in the data structure. Such relationships may likewise be achieved by assigning storage for the fields with locations in a computer-readable medium that convey relationship between the fields. However, any suitable mechanism may be used to establish a relationship between information in fields of a data structure, including through the use of pointers, tags or other mechanisms that establish relationship between data elements. 
     Thus, the disclosure and claims include new and novel improvements to existing methods and technologies, which were not previously known nor implemented to achieve the useful results described above. Users of the method and system will reap tangible benefits from the functions now made possible on account of the specific modifications described herein causing the effects in the system and its outputs to its users. It is expected that significantly improved operations can be achieved upon implementation of the claimed invention, using the technical components recited herein. 
     Also, as described, some aspects may be embodied as one or more methods. The acts performed as part of the method may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative embodiments.