The disclosure relates to techniques for network resource sharing, and in particular, to techniques for leasing resources from one terminal on a network to another.
Communications networks are becoming increasingly ubiquitous, with the advent of sophisticated wireline and wireless technologies for providing fast data communications between terminals. Examples of such networks include personal area networks enabled by USB or Bluetooth, local area networks enabled by Ethernet or IEEE 802.11, and wide area networks including the Internet. Terminals on a network are commonly configured to share information and data with one another.
In some cases, resources such as Internet access bandwidth, computational bandwidth, and other terminal-specific capabilities may also be shared between terminals over a network. However, dynamic allocation and sharing of resources presents certain challenges. As resources are scarce, the owner of a resource (or the “owner terminal”) must typically grant access to its local resources only on a limited basis, to avoid disrupting the owner terminal's internal operations. And since terminals on a network may often be owned and controlled by separate entities, owner terminals may preclude resource sharing altogether, as there is no perceived benefit to a terminal from sharing its resources with other terminals. This arrangement is inefficient, however, as there may be a substantial amount of idle resources sitting on a network that may be advantageously utilized by other terminals.
It would be desirable to provide a scheme whereby owner terminals may be induced to advertise and share their local resources with other terminals (or “user terminals”) for a benefit, and whereby user terminals may identify and convey payment to owner terminals for use of such resources.
An aspect of the present disclosure provides an apparatus comprising: a processor; and at least one memory coupled to the processor, the at least one memory storing instructions for causing the processor to implement an application module configured to run an application and a user broker module configured to: determine a requirement set of the application module; identify at least one remote terminal having a resource to at least partially satisfy the requirement set of the application module; enable the application module to use the resource of the at least one remote terminal according to a service agreement; and arrange for the at least one remote terminal to be compensated based on the use of the resource.
Another aspect of the present disclosure provides an apparatus comprising: a processor; and at least one memory coupled to the processor, the at least one memory storing instructions for causing the processor to implement a lease broker module configured to: determine terms on which a resource is available to be used by at least one remote terminal; advertise the terms to the at least one remote terminal; negotiate a service agreement with the at least one remote terminal to use the resource; enable the at least one remote terminal to use the resource; and arrange to be compensated by the at least one remote terminal based on the use of the resource.
Yet another aspect of the present disclosure provides a method comprising: determining a requirement set of an application module; identifying at least one remote terminal having a resource to at least partially satisfy the requirement set of the application module; enabling the application module to use the resource of the at least one remote terminal according to a service agreement; and arranging for the at least one remote terminal to be compensated based on the use of the resource.
Yet another aspect of the present disclosure provides a method comprising: determining terms on which a resource is available to be used by at least one remote terminal; advertising the terms to the at least one remote terminal; negotiating a service agreement with the at least one remote terminal to use the resource; enabling the at least one remote terminal to use the resource; and arranging to be compensated by the at least one remote terminal based on the use of the resource.
The detailed description set forth below in connection with the appended drawings is intended as a description of exemplary embodiments of the present invention and is not intended to represent the only exemplary embodiments in which the present invention can be practiced. The term “exemplary” used throughout this description means “serving as an example, instance, or illustration,” and should not necessarily be construed as preferred or advantageous over other exemplary embodiments. The detailed description includes specific details for the purpose of providing a thorough understanding of the exemplary embodiments of the invention. It will be apparent to those skilled in the art that the exemplary embodiments of the invention may be practiced without these specific details. In some instances, well known structures and devices are shown in block diagram form in order to avoid obscuring the novelty of the exemplary embodiments presented herein.
In
While the network 110 is shown as being interposed between any two terminals in
It will be appreciated that each of the terminals 120A, 120B, 120C, 120D typically possesses a certain amount of available local resources for performing its computational and/or processing tasks. For example, the personal computer 120A may process data using one or more CPU's locally provided within the personal computer 120A. Or, the personal computer 120B may store data using a local hard disk storage medium provided within the personal computer 120B. As a further example, the mobile phone 120C may perform, e.g., compression or decompression of video, using one or more processing engines located locally within the mobile phone 120C. In such applications, the processing and storage capability of each terminal is typically limited by the amount of local resources available at the terminal.
In some applications, it may be advantageous for a terminal to have access to additional processing or storage capability beyond what is locally available at the terminal. For example, while running a computationally intensive application, personal computer 120A (the “user terminal”) may exhaust its own computational resources, while personal computer 120B (the “owner terminal”), which is idle, may have the additional computational resources needed by personal computer 120A. While schemes for sharing resources between terminals are known in the art, such sharing is often impractical due to the lack of a general and flexible scheme for identifying available resources to be shared, as well as a system for equitably partitioning the resource usage amongst the different terminals. In the previous example, personal computer 120A may benefit from the use of the computational resources of personal computer 120B, yet personal computer 120A does not know that personal computer 120B has those resources, as personal computer 120B does not advertise its available resources. Furthermore, even if personal computer 120A did know of the availability of personal computer 120B's resources, personal computer 120B may not be willing to lend its resources to personal computer 120A, as the two computers may be owned by two unrelated entities, and thus there is no perceived benefit to the owner of computer 120B from lending its resources to computer 120A.
It would be desirable to provide flexible and universal techniques whereby owner terminals may be induced to advertise and share their local resources with user terminals for a benefit, and whereby user terminals may identify and convey payment to owner terminals for use, or “lease,” of their resources.
In
For example, in an exemplary embodiment wherein the local resource 216 is CPU processing capability, the broker 212 may determine, e.g., that 2 MIPS (or million instructions per second) of the local resource 216 is available for lease starting from a start time up to a stop time. The lease broker 212 may advertise these parameters to other terminals on the network 110, and negotiate terms under which the local resource 216 may be leased to other terminals.
According to the present disclosure, the local resource 216 may include, but is not limited to, CPU capacity, storage capacity, Internet bandwidth, electrical power, etc. Note these examples are given for illustrative purposes only, and it is contemplated that any resource that can be shared with other users is within the scope of the present disclosure.
In
As compensation for the lease of its local resource 216, the lease broker 212 may require payment. According to the present disclosure, such payment may include, but is not limited to, monetary currency, resource exchange, redeemable credits, etc. Note these examples of payment are given for illustrative purposes only, and it is contemplated that any form of value exchange is within the scope of the present disclosure.
Note in
In
At block 320, the lease broker 212 may identify whether the locally available resources may be shared with other terminals on the network with minimal impact to the local terminal 210. For example, even if the owner terminal 210 has data storage resources locally available as determined at block 310, sharing of the owner terminal's data storage resources may not be appropriate at the moment if, e.g., the owner terminal 210 is a mobile device running low on battery power.
At block 330, the lease broker 212 establishes the service level that can be offered. Service level parameters may include types of resources, amounts of resources that may be leased, etc. For example, the owner terminal 210 may determine that given its available resources, it may serve as a traffic router, supporting up to 100 kilobits per second (kbps) of network traffic according to a certain time schedule. The owner terminal 210 may also determine that it may simultaneously serve as a computing node for a distributed architecture, supporting up to 2 MIPS of processing during a particular scheduled time. The service level parameters may further specify such parameters as availability, priority, etc.
In an exemplary embodiment, based on the service level parameters established at block 330, a service level agreement (SLA) (or “service agreement”) may be formed between an owner terminal and the user terminal, e.g., according to the procedures as later described with reference to
At block 340, the lease broker 212 establishes price levels corresponding to the service levels offered. For example, the lease broker 212 may request monetary compensation for use of its available network traffic bandwidth, with the price based on, e.g., per-kbps usage, etc.
At block 350, the lease broker 212 may advertise the availability of its local resource 216 over the network 110. The information may be sent, e.g., via broadcast or unicast to its peers on the network 110. Alternatively or in conjunction, the lease broker 212 may respond to a request for capability message received from a user broker 222.
At block 360, the lease broker 212 waits to receive bids from user terminals.
In
At block 420, the user broker 222 determines the currency type and price range that a user of the user terminal 220 is willing to pay to lease those additional resources from another terminal. For example, the currency type may be monetary, and the user may be willing to pay, e.g., up to 5 dollars to lease the desired resources. Alternatively, the currency type need not be monetary, and the user of the user terminal 220 may be willing to offer use of its own resources in exchange for using the resources of other terminals. For example, the user terminal 220 may determine that it has excess storage capacity, and may offer a certain number of megabytes of its local storage capacity for use by another terminal in exchange for additional network traffic bandwidth.
Alternatively, service level agreements (SLA's) between an owner terminal and a user terminal may be traded as currency, and different values may be assigned to service level agreements for the same resource. In an exemplary embodiment, a user terminal may own a first SLA to use a particular resource according to a first time schedule. The user terminal may exchange the first SLA for a second SLA for use of the same resource according to a second time schedule. Use of the resource during the second time schedule may be more valuable than use of the resource during the first time schedule. Accordingly, to exchange the first SLA for the second SLA, the user terminal may be required to offer additional payment, in view of the fact that the second SLA is more valuable than the first SLA. Alternatively, if the first SLA is more valuable than the second SLA, then the user terminal may instead be offered payment for exchanging the first SLA for the second SLA. Such alternative exemplary embodiments are contemplated to be within the scope of the present disclosure.
It will be appreciated that the currency type/price range/compensation offered by the user broker 222 need not be as explicitly enumerated herein, and may be any type of reward. Such alternative exemplary embodiments are contemplated to be within the scope of the present disclosure.
At block 430, the user broker 222 may search for available resources as advertised by other terminals on the network 110. For example, the user broker 222 may obtain the information broadcast or unicast by the lease broker 212 at block 350 of
At block 440, the user broker 222 may check for a match between the resource requirements of the user terminal 210 and the available resources of an owner terminal 210 as advertised by the owner terminal's lease broker 212. If there is no match, the user broker 222 may return to block 430 and continue searching. If a match is obtained, the user broker 222 may proceed to block 450.
At block 450, the user broker 222 may initiate bidding for the resource.
Note the procedure performed by the user broker 222 in
In
Thereafter, at blocks 520A and 520B, the lease broker 212 and user broker 222 enter negotiation, and try to reach an agreement as to the price and other terms at which the local resource 216 will be leased to the user terminal 220. In an exemplary embodiment, blocks 520A and 520B may include several exchanges of offers, counter-offers, etc., as in a typical negotiation between two parties. Further description of specific operations that may be performed at blocks 520A and 520B is given below with reference to
Following blocks 520A and 520B, the owner terminal 210 begins to share its resource with the user terminal 220 at block 530A. Likewise, at block 530B, the user terminal 220 begins to use the resource provided by the owner terminal 210.
At block 610, a service-level agreement (SLA) is negotiated between the lease broker 212 and the user broker 222. As earlier described, the service level agreement may specify parameters such as minimum resource bandwidth guaranteed to be provided by the lease broker 212, latency guarantees, etc. Note for a single resource, different service level agreements may be offered according to different time schedules for use of that resource.
At block 620, a price for the agreed-upon service level is negotiated between the lease broker 212 and the user broker 222.
At block 630, the form of payment is negotiated. For example, if the payment is monetary, then credit card payment or bank account transfer details may be specified. Alternatively, if payment is in the form of other resources, the service levels of the payment resources may also be specified.
At block 640, the lease broker 212 verifies that payment has been made by the user broker 222.
At block 650, the lease broker 212 grants access to the local resource 216 according to the service level as agreed upon at block 610.
At block 660, the lease broker 212 monitors the usage of its local resource 216 by the user terminal 216. As shown in
At block 670, the lease broker 212 may benchmark the actual amount of resources used by the user terminal 216. The lease broker 212 may adjust the payment required from the user terminal 216 in response to actual usage.
At block 710B, the user broker 222 may check to make sure that it has sufficient funds available to lease the resources.
At block 720B, the user broker 222 may set aside funds for such payment, without actually paying the lease broker 212.
At block 730B, the user broker 222 may notify the lease broker 212 that the funds have been set aside.
At block 730A, the lease broker 212 may verify that the amount set aside for payment by the user broker 222 is correct.
At block 740A, the lease broker 212 may grant access to the resource 216 by the user terminal 220 in response to the verifying performed at block 730A.
At block 740B, the user terminal 220 may obtain access to the resource 216.
At block 750B, the user terminal 220 may start to use the resource 216.
At block 760B, the user terminal 220 finishes using the resource 216.
At block 770B, the user broker 222 may measure the quality of service based on the actual resource usage. This may be used to determine the actual payment due to the lease broker 212.
At block 770A, the lease broker 212 may also verify the performance, and request payment for the actual resource usage at block 780A.
At block 790B, the user broker 222 pays the amount owed for the actual resource usage.
At block 790A, the lease broker 790B receives payment.
While
It will be appreciated that a single terminal may adopt the techniques described herein to simultaneously act as both an owner terminal for certain resources and as a user terminal for other resources, subject to the available communications bandwidth between the single terminal and the network 110. For example, a first terminal may lease a storage medium from a second terminal on the network, while simultaneously the first terminal's network bandwidth may be leased to a third terminal on the network. Furthermore, a single terminal may lease resources from multiple owner terminals simultaneously, and likewise, may also lease resources to multiple user terminals simultaneously. Such exemplary embodiments are contemplated to be within the scope of the present disclosure.
It will be further appreciated that various modifications to the techniques described above may be readily derived by one of ordinary skill in the art within the scope of the present disclosure. For example, in an alternative exemplary embodiment (not shown), an SLA and corresponding compensation terms may be dynamically modified after bidding and negotiation for a resource has taken place. Such modification may be initiated by either the owner terminal or the user terminal. For example, if an owner terminal determines that it can no longer provide access to a given level of bandwidth or storage, etc., e.g., due to increased local demand for the resource, then the owner terminal may alert the user terminal that it desires to modify the negotiated SLA. Modification of the SLA may include adjustment of the payment due, and/or include refund of payment already made by the user terminal. Modification of the SLA may also specify new terms according to which the resource may be offered. As a further example, if a user terminal determines that it no longer needs to use the resource of the owner terminal, it may request a modification of the SLA with the owner terminal to reflect the reduced need. In an exemplary embodiment, such modification of the SLA may be subject to, e.g., any conditions on modifying the SLA as originally agreed upon by the parties.
Further described hereinbelow are specific applications of the techniques of the present disclosure. Note the applications are given for illustrative purposes only, and is not meant to limit the scope of the present disclosure in any way.
A. Virtual Data Center
In a first exemplary embodiment of a virtual data center, a user terminal may store and access one or more of its files on one or more owner terminals accessible over the network. For example, the first device 910 may store a File #3 952 on storage medium 951 of device 950, wherein File #3 is not locally stored on the storage medium 920 of device 910. The user terminal may do so for any number of reasons, e.g., it does not have the capacity to locally store the file, or it may be more cost-effective to store the file remotely, etc.
In a second exemplary embodiment of a virtual data center, a user terminal may store back-up versions of its files on one or more owner terminals from which the user terminals leases storage space. For example, the first device 910 may access a backed-up version of its local File #1 912 as File #1 942 on storage medium 941 of device 940.
In an exemplary embodiment (not shown), back-up copies of one or more files belonging to the first device 910 may further be replicated and separately stored on multiple owner terminals throughout the network. This may advantageously increase the probability that the first device 910 will be able to access its back-up file at any time. For example, if one or more owner terminals storing the back-up file of the first device 910 is not available to the first device 910 at the moment, then the first device 910 may instead access its back-up file from any of the other owner terminals storing its back-up file.
In a third exemplary embodiment, a single file belonging to a user terminal may be disassembled into individual sub-files, and separately stored on different owner terminals. For example, in
In an exemplary embodiment, any aspects of the virtual data center separately described above may be provided in combination in a single system. Such exemplary embodiments are contemplated to be within the scope of the present disclosure.
It will be appreciated from the above description of the virtual data center that, once an agreement concerning lease of a resource is in place, the actual location of the file on the network 901 need not be known to the user terminal.
In an exemplary embodiment, the compensation to devices 930, 940, and 950 for usage of their respective storage space may include monetary compensation charged as a function of the amount of storage space leased, and/or the amount of time for which the storage space is leased. In an exemplary embodiment, the network 901 may be the Internet. The first device 910 may be, e.g., a mobile phone having limited local storage resources, while the devices 930, 940, and 950 may be personal computers or other equipment having available storage resources. Note the leasing devices may generally include any device with available storage space that is connected to the network, and also supports a platform for leasing its resources according to the techniques of the present disclosure.
B. Mobile phone bandwidth leasing
For example, the mobile phone 1010 may also have access to a Bluetooth network 1020, and communicate with other devices 1030, 1040, 1050 over connections 1015, 1025, 1035 using the Bluetooth protocol. Via the techniques of the present disclosure, the mobile phone 1010 may discover that devices 1030 and 1040 are leasing Internet traffic bandwidth on a per-kilobyte basis. After successfully bidding for the bandwidth, the mobile phone 1010 additionally utilizes the second connection 1015 and third connection 1025 at rates of BW2 and BW3, respectively, to access the Internet.
In an exemplary embodiment, the devices 1030, 1040 may be other mobile phones accessing the data network using W-CDMA, cdma2000, or another wireless communications protocol. Alternatively, any or all of the devices 1030, 1040 may be, e.g., a personal computer accessing the Internet via an Ethernet connection.
C. Dynamic Distributed Computing
In an exemplary embodiment, the make-up of the leasing terminals may change over time. For example, the mobile phone 1120 may leave the network 1101, while another mobile phone (not shown) with available computational resources may enter the network 1101. In this case, the main computing terminal 1110 may terminate its lease with the mobile phone 1120, and establish a new lease for the CPU of the newly present mobile phone. In this manner, the leasing techniques of the present disclosure allow the computing task of the main computing terminal 1110 to be dynamically distributed over multiple terminals as computational resources become available.
In an exemplary embodiment, a user terminal may further lease disk storage space and Internet bandwidth access from a plurality of owner terminals, in addition to computational resources. This may enable a multi-functional application wherein, e.g., a user terminal may direct owner terminals to download selected data from the Internet, analyze the downloaded data, store the analysis results, and provide an analysis report to the user terminal. Such exemplary embodiments wherein multiple resources are simultaneously leased and utilized are contemplated to be within the scope of the present disclosure.
D. Operating System or Application Leasing
There may arise situations wherein the first mobile phone 1210 is called upon to run a target application that is not supported by its native OS 1212. In this case, the first mobile phone 1210 may search for another terminal running an OS that does support the target application, e.g., the second mobile phone 1220. Note for simplicity, the connections to the network being the first mobile phone 1210 and second mobile phone 1220 has been omitted in
According to the techniques of the present disclosure, the first mobile phone 1210 may lease the use of the second mobile phone 1220's OS 1222 to run the target application and retrieve the results of the executed target application from the second mobile phone 1220, according to the techniques of the present disclosure. For example, if the second mobile phone 1220 does not have the target application locally available, the second mobile phone 1220 may download the application from the first mobile phone 1210, or request the first mobile phone 1220 to indicate a location where the target application may be downloaded from. The second mobile phone 1220 may run the target application using the resources of the second mobile phone 1220, and provide the results of running the application to the first mobile phone 1210. The second mobile phone 1220 may perform such service for the first mobile phone 1210 according to a service level agreement specifying, e.g., the storage, bandwidth and/or CPU requirements, according to the techniques of the present disclosure.
In an alternative exemplary embodiment, if the second mobile phone 1220 already has the target application locally available, then the first mobile phone 1210 may simply request the second mobile phone 1220 to run the application. In this case, it will be appreciated that the application module on the second mobile phone 1220 may serve as a remote interface to the first mobile phone 1210 for accessing the target application on the second phone.
In an exemplary embodiment, the application on the remote device, e.g., the second phone, may expose its application programming interface (API) to other devices on the network, and thereby allow the first phone's application to directly utilize the second phone's application from over the network. In an alternative exemplary embodiment, an intermediary application may be developed, e.g., by a third party, that provides an interface to the second phone's application to allow access to it over the network by, e.g., the first phone's application. One of ordinary skill in the art will appreciate that the communication interface between a local application and a remote application may be based on, e.g., Simple Object Access Protocol (SOAP), Remote Procedure Protocol (RPC), Adobe Flex, or any other standard protocol known in the art.
In an exemplary embodiment, if the first mobile phone 1210 needs to perform a web search, the first mobile phone 1210 may locally perform a search by accessing a first search website, while simultaneously offloading a search accessing a second search website to the second mobile phone 1220. After the search is completed, the second mobile phone 1220 may return the search results to the first mobile phone 1210. It will be appreciated that the results from both searches will be more extensive than the single search conducted by the first mobile phone 1210 using its own resources.
In
In the exemplary embodiment wherein the apparatus 250 is configured as an owner terminal 210, the memory 252 may store storing instructions for causing the processor 251 to implement a lease broker module configured to: determine terms on which a resource is available to be used by at least one remote terminal; advertise the terms to the at least one remote terminal; negotiate a service agreement with the at least one remote terminal to use the resource; enable the at least one remote terminal to use the resource; and arrange to be compensated by the at least one remote terminal based on the use of the resource.
One of ordinary skill in the art will appreciate that for simplicity, various elements have been omitted from the implementation illustrated in
In this specification and in the claims, it will be understood that when an element is referred to as being “connected to” or “coupled to” another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected to” or “directly coupled to” another element, there are no intervening elements present.
Those of skill in the art would understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof
Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the exemplary embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the exemplary embodiments of the invention.
The various illustrative logical blocks, modules, and circuits described in connection with the exemplary embodiments disclosed herein may be implemented or performed with a general purpose processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The steps of a method or algorithm described in connection with the exemplary embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.
In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
The previous description of the disclosed exemplary embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these exemplary embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other exemplary embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the exemplary embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.