Abstract:
A computer trading system for determining a calculated value for a user defined contract on a future characteristic(s) of a financial market comprises a receiving component for receiving a parameter(s) from a user defining the user defined contract and receiving financial market data concerning the financial market. The system includes a calculating component operable to determine a calculated value, such as a price, payout, or odds, for the user defined contract based on the parameter(s) and the financial market data and a transmission component for transmitting the calculated value to the user. The receiving component may also receive an order for the user defined contract from the user based on the calculated value to thereby create an obligation for a bookmaker to pay a payout amount upon the occurrence of the future characteristic(s) of the financial market satisfying the parameter(s).

Description:
RELATED APPLICATIONS  
       [0001]     This application is a continuation of and claims priority to U.S. application Ser. No. 09/764,778, filed Jan. 17, 2001, which in turn claims priority from European Patent Application No. 00302530.1, filed Mar. 28, 2000, and U.K. Patent Application No. 0010270.7, filed Apr. 27, 2000, all of which are hereby incorporated by reference in their entireties. 
     
    
     BACKGROUND  
       [0002]     The present disclosure relates to a betting system and method for buying and selling contracts on financial markets.  
         [0003]     Although betting in many diverse forms has been in existence for thousands of years, the concept of a bet on the future performance of one or more financial market indicators is a relatively recent one. Such a bet may take one of two forms, as will be described.  
         [0004]     The first form of such a bet (the “spread bet”) is one which, if won by the making of a correct prediction, pays out a sum proportional to the market fluctuation. For instance, a speculator may bet that a given stock will fall within a set period of time, and, if this prediction is correct, may receive winnings in direct proportion to the amount by which the stock has fallen in that period of time.  
         [0005]     The other form that such a bet may take is known as the “digital option”. Digital bets are of the same form as a traditional sporting bet in that the speculator predicts a certain event and receives either a fixed sum of winnings (if that event does occur) or no winnings (if the event does not occur). For instance, a speculator may bet that a certain stock index will rise to a certain level by a certain time. If the named index does reach this level, the speculator wins an agreed amount of money irrespective of any amount by which the index has exceeded the predicted level. It is this type of bet that is known as a “fixed odds” bet.  
         [0006]     However, problems face the individual investor who wishes to place bets on the financial markets. The wide universe of financial instruments and derivatives products is typically available only to professional investors who have the financial resources and know-how to access these products.  
         [0007]     Problems also face the bookmaker who wishes to offer financial bets to the private investor. These include the fact that financial bookmaking is labor-intensive, with skilled staff being required constantly to adapt the odds offered on an immense variety of possible bets to market conditions that are changing on a minute-by-minute basis.  
         [0008]     The average size of a bet placed by an individual customer will, in general, be very small compared to the average size of a typical stock market direct investment. The potential profit to the bookmaker from such a small investment will therefore be too small for it to be economically viable to employ skilled staff to calculate the odds to offer to individual speculators sufficiently quickly.  
         [0009]     A further problem facing bookmakers is that it is very difficult to accurately price complicated or unusual bets, and bookmakers typically offer only a few standard bets on a few markets.  
         [0010]     A need exists for a system and method that alleviates some or all of the above problems, and which enables a bookmaker efficiently to offer a wide range of financial bets to speculators wishing to place relatively small bets. 
     
    
     BRIEF DESCRIPTION OF THE DRAWING  
       [0011]      FIG. 1  shows a schematic layout of the components of a betting system in accordance with a preferred embodiment of the present invention. 
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0012]     According to a first embodiment, a fixed-odds betting system comprises a user terminal operable to accept parameters, input by a user, relating to a fixed-odds bet on an aspect of a financial market; and a central processing machine having a data feed to a source of data concerning a financial market and means operable to calculate the fixed odds for the bet, based on at least some of the parameters input by the user and the data obtained from the data feed. Advantageously, the user terminal may be operable to receive and display the odds calculated by the central processing machine.  
         [0013]     Preferably, the data feed to the source of data concerning the financial market comprises at least a data feed to real-time information concerning the financial market. Conveniently, the data feed to the source of data concerning the financial market may comprise a data feed to historical data concerning the financial market. Advantageously, the data feed is connected to the source of data concerning the financial market over a first data communications network. Preferably, the first data communications network is the Internet or a leased line. The central processing machine may have at least one other data feed to a source of data concerning one or her financial markets.  
         [0014]     The user terminal and the central processing machine are preferably connected to one another via a second data communications network such as the Internet.  
         [0015]     Conveniently, the system may further comprise a payment system for deducting payment for the bet from the user, the mechanism being linked to the central processing machine. The payment system for deducting payment from the user may include an E-cash or credit card payment system.  
         [0016]     The system may further comprise an accounting system linked to the central processing machine and a management terminal operable to provide information regarding the operation of the betting system to an administrator thereof.  
         [0017]     Advantageously, the parameters for calculating the odds may include one or more of the following: the relevant financial market(s); the amount that the user wishes to bet or the amount that the user wishes to win; and one or more barrier or target levels.  
         [0018]     The system may further comprise a storage facility for storing information relating to bets. The central processing machine preferably includes means to retrieve information stored in the storage facility, and provide information to a user relating to a bet previously placed by the user.  
         [0019]     Preferably, the central processing machine includes means to calculate a price at which to offer to purchase the previously placed bet from the user and to display the price calculated by the central processing machine.  
         [0020]     In another embodiment, a method of operating a fixed-odds betting system including a central processing machine in communication with a data feed to a source of data concerning a financial market, and a user terminal in communication with the central processing machine, comprises accepting from a user parameters relating to a fixed-odds bet on an aspect of a financial market; receiving one or more of the parameters at the central processing machine; obtaining data concerning the financial market via the data feed; and the central processing machine calculating a fixed-odds price for the bet based on at least one of the parameters input by the user and the data obtained from the data feed.  
         [0021]     The method may further comprise the steps of displaying the calculated odds to the user and deducting or receiving payment from the user for placing the bet.  
         [0022]     Preferably, the step of receiving one or more parameters from the user includes the step of receiving information relating to one or more of the following: the relevant financial market; the amount that the user wishes to win or the amount that the user wishes to bet; and one or more barrier or target levels.  
         [0023]     The step of obtaining data concerning the financial market may include the step of obtaining real-time data relating to one or more of the following: market prices; option quotes; interest rates and dividend yields.  
         [0024]     The step of obtaining data concerning a financial market may include the steps of obtaining historical data relating to market prices.  
         [0025]     Preferably, the step of calculating the fixed-odds price comprises the step of calculating an estimate of the future volatility of the financial market.  
         [0026]     Conveniently, the method may further comprise the steps of checking the parameters input by the user for logical inconsistencies therebetween and checking the opening times of the financial market.  
         [0027]     Preferably, the method further comprises the step of providing at least one other data feed to a source of data concerning one or more other financial markets.  
         [0028]     Conveniently, the step of receiving parameters from the user preferably includes the step of receiving parameters relating to an aspect of the one or more other financial markets.  
         [0029]     Advantageously, the step of calculating the fixed-odds price for the bet preferably includes the step of calculating a correlation matrix containing information concerning the financial market and the one or more other financial markets.  
         [0030]     Preferably, the system further comprises the step of providing a storage facility, accessible by the central processing machine, for storing information relating to bets.  
         [0031]     Conveniently, the step of calculating odds includes the step of calculating a hedging factor based on information concerning previously placed bets obtained from the storage facility. The method may further comprise the steps of: (1) calculating, at the central processing machine, a price at which to offer to buy a previously placed bet from the user; and providing the price to the user via the user terminal.  
         [0032]     In yet another embodiment, a computer program comprises computer program code means adapted to: receive one or more parameters from a user relating to a fixed-odds bet on an aspect of a financial market; obtain data concerning a financial market via a data feed; and calculate a fixed-odds price for the bet based on at least one of the parameters input by the user and the data obtained from the data feed. The computer program may be embodied on a computer readable medium or otherwise operable on a computer.  
         [0033]     In still another embodiment, a central processing machine having a data feed to a source of data concerning a financial market is operable to calculate fixed odds, based on parameters input by a user and data obtained from the data feed.  
         [0034]     Conveniently, the data feed to the source of data concerning the financial market may comprise a data feed to real-time information concerning the financial market.  
         [0035]     Advantageously, the data feed to the source of data concerning the financial market may comprise a data feed to at least historical data concerning the financial market. Preferably, the data feed is connected to the source of data concerning the financial market over a first data communications network such as the Internet or a leased line.  
         [0036]     Advantageously, at least one other data feed may be provided to a source of data concerning one or more other financial markets.  
         [0037]     The central processing machine may further comprise a storage facility for storing information relating to bets.  
         [0038]     The central processing machine may also have means to calculate a price at which to offer to purchase a previously placed bet from the user.  
         [0039]     Advantageously, the central processing machine may further comprise a management terminal operable to display information regarding the operation of the betting system to an administrator thereof.  
         [0040]     With reference to  FIG. 15 a  central processing machine  1  of a betting system in accordance with a preferred embodiment comprises a server running a server operating system. A computer program embodying an aspect of the betting system is loaded onto the central processing machine  1 , as will be described in greater detail below.  
         [0041]     The central processing machine  1  is linked via a first data communications network  2  to a plurality of user terminals  3 . Preferably, the first network  2  is the Internet. The user terminals comprise PC&#39;s, or other suitable machines, running an appropriate operating system to interface with prospective customers, for instance a Windows or UNIX type operating system.  
         [0042]     The central processing machine  1  is further connected via a second data communications network  4  to two data feeds, one of which is a data feed  5  to a source of real-time market information, and the other of which is a data feed  6  to a source of historical market information. Preferably, the second network  4  is the Internet or a leased line. Examples of real-time market quotes data feeds are those provided by financial information providers such as Reuters, Bloomberg, Bridge, DBC, etc. The primary requirement for this data link is that it should be real-time, which is to say that the quotes retrieved via the data link are up-to-the-second real-time market quotes.  
         [0043]     The betting system of  FIG. 1  further comprises a data storage facility  7 , comprising a file server operable to store information concerning placed, pending and expired bets on one or more disks. The data storage facility is connected to an archival data storage facility  8 , which is operable to retain information on a plurality of tapes or other long-term storage media.  
         [0044]     The betting system includes an E-cash or credit card payment system  9 , which is linked to the central processing machine  1  by a third data communications network  10 . An accounting system  11  is also included in the betting system, this accounting system being directly linked to the central processing machine  1 .  
         [0045]     A management terminal  12  also comprises part of the betting system. This management terminal  12  is linked to the central processing machine  1  via a fourth data communications network  13 , which is preferably the Internet.  
         [0046]     In operation, an individual user is able to log on to a user terminal  3  for the purpose of placing a fixed-odds financial bet. A user-id and password, provided to the individual by the administrator of the betting system, may be required to do so. In practice, the user terminal  3  may comprise a dedicated terminal in a public betting facility, or may alternatively comprise the user&#39;s own PC.  
         [0047]     When the user attempts to log on to the betting system at the user terminal  3 , the user terminal  3  connects to the central processing machine  1  via the first network  2 . If a password is required, the password must be accepted by the central processing machine  1  before the user is allowed to log on to the betting system.  
         [0048]     The user is now able to place a fixed-odds financial bet using the betting system. The user terminal  3  presents the user with a suitable interface for doing so, this interface comprising a number of menus or the like through which the user may navigate to glean information or select bet parameters. Bet parameters that the user may select may include, among others: the financial market(s) upon which the bet is to be based (for instance a foreign exchange rate); the amount that the user wishes to bet or the amount that the user wishes to win; or one or more barrier or target levels (relating to market performance) which set a threshold for the financial market parameter being monitored. Once the bet parameters are decided upon by the user, these parameters are submitted to the central processing machine  1  via the first network  2 .  
         [0049]     The first step performed by the central processing machine  1  upon receipt of the bet parameters from the user terminal  3  is to ascertain whether or not the bet defined by the bet parameters is within reasonable reach of current market prices. In order to decide whether or not this is the case, the central processing machine  1  gathers information concerning the current market prices from the data feed  5  to the source of real-time market information. If the data derived therefrom indicates that there is no realistic possibility of the market price changing with the rapidity required by the bet, then the central processing machine  1  will reject the bet.  
         [0050]     Next, the bet parameters input by the user are checked by the central processing machine  1  for logical inconsistencies, and the bet is rejected if such inconsistencies are found to be present. For instance, if a user has input bet parameters defining a bet that a certain financial index will remain between a high value of 110 and a low value of 120, the central processing machine  1  will determine that the bet is logically inconsistent and reject the bet.  
         [0051]     A further step performed by the central processing machine  1  on receipt of a set of bet parameters from user terminal  3  is to check the opening times of the relevant financial markets. The central processing machine  1  has, for this purpose, a link to a source of information containing the opening hours and public holidays of all of the markets upon which bets are offered. If a user is allowed to bet upon the performance of a market during a period for which that market is closed, the user gains an unfair advantage and thus such a bet would be rejected.  
         [0052]     Once it has been established by the central processing machine  1  that the bet parameters input by the user define a valid bet, the next step is to determine the real-time raw market values from which to calculate the price of the bet. In order to do this, the central processing machine  1  accesses the data feed  5  to the source of real-time market information. The data derived therefrom may include current market prices, option quotes, interest rate levels, dividend yields (in the case of stocks or stock indices), or carrying costs (i.e., storage, delivery or insurance costs, in the case of commodities). The central processing machine  1  may also access the data feed  6  to the source of historical market information, and the data gathered therefrom may include historical closing prices for the relevant markets.  
         [0053]     Once a set of valid bet parameters have been received by the central processing machine  1  and the relevant information has been gathered from the data feeds  5 ,  6 , the central processing machine  1  uses the information to calculate the odds that will be offered to the user for the bet.  
         [0054]     The first step in the process is to calculate the implied volatility of each market upon which the bet is based. The volatility of a market is defined as the amount by which the market fluctuates during a given period, and is often defined as the annualized standard deviation of the natural logarithm of the price returns of the daily closing values of the market.  
         [0055]     The implied volatility is the market volatility that the listed options market implies for the future, market volatility being a major factor in the determination of the price of an option. If the price of the listed options relating to a given market for a given time period is known, this figure can be reverse-engineered to calculate the future volatility of the market implied by that option price. Various techniques exist for this reverse engineering operation, the most commonly used of which is an algorithm based on the Black and Scholes option pricing model, however the skilled person will realize that any of several alternative algorithms may be used instead.  
         [0056]     A standard option pricing model such as the Black and Scholes model assumes that the financial markets follow a log-normal distribution. This assumption does not, however, accurately reflect the market panics (like the 1987 stock market crash), which occur with a higher frequency than would be expected in a purely lognormal distribution. To adjust for the “fatter tails” of the real distribution of market returns, the concept of “volatility smile” is introduced, whereby options with different strike prices trade at different implied volatilities. Options with different expiry dates also trade at different implied volatilities, reflecting different expectations of market volatility over different time periods. Since there will likely not be any option with exactly the same expiry date and target price as the bet, interpolation will be used to arrive at the best estimate of the volatility for the bet.  
         [0057]     To calculate the volatility to be used to price the bet, options prices are gathered from the data feed  5  to the real-time source of market information. The implied volatilities of the options with strike prices closest to the barrier or target level of the bet, and with expiry dates closest to the expiry date of the bet, are computed. These implied volatility points are then interpolated to arrive at the implied volatility most appropriate for the expiry date and barrier or target level of the bet (if the bet has several barrier or target levels, the level that will lead to the highest selling price for the bet may be used). This interpolated implied volatility is used by the central processing machine  1  to calculate the odds for the bet.  
         [0058]     It is also necessary for the central processing machine  1  to take into account the growth of the market or markets in question. In order to derive this value, the interest rate and other components of the carrying cost for each market (extracted from the data feed  5  to the real-time source of market information) are required. For stocks or stock indices, the growth of the market is typically approximated as being the interest rate minus the annualized dividend yield. In a similar manner to that described above, the interest rate for an arbitrary time period may be estimated by interpolating between the deposit rates for earlier and later maturities to arrive at an appropriate value. For foreign exchange rates, the growth rate is defined as the difference between the deposit rates in each currency, and for other markets such as commodities, the growth rate incorporates factors such as storage or delivery costs, and insurance fees.  
         [0059]     A complex bet may involve predictions on the performances of several different markets, and if such a bet is placed then a correlation matrix for these different markets will need to be computed. Such a correlation matrix is computed by calculating the correlation coefficients of the relevant markets over a period of historical data obtained from the data feed  6  to the source of historical market information. Ideally, this time period is in proportion to the length of the bet.  
         [0060]     Once all of the necessary information has been gathered or computed by the central processing machine  1 , the central processing machine  1  proceeds to calculate the odds for the bet defined by the bet parameters. There are various ways in which this may be performed for each type of bet that might be placed by the user. Common bets that might be placed include:  
         [0061]     an “up/down” bet that a given market will be above or below a given level on a given date;  
         [0062]     an “expiry range” bet that a given market will be between two given levels on a given date;  
         [0063]     a “rainbow” bet, which is essentially a multi-market expiry range bet;  
         [0064]     a “bullseye” bet that a given market will have an exactly given value on a given date;  
         [0065]     a “one-touch” bet that a given market will touch a given barrier level at some point before the expiry of the bet;  
         [0066]     a “no-touch” bet that a given market will not touch a given barrier level at any point before the expiry of the bet;  
         [0067]     a “range” bet that a given market will touch neither of two given barrier levels at any point before the expiry of the bet;  
         [0068]     a “double one-touch” bet that a given market will touch both of two given barrier levels at some point before the expiry of the bet;  
         [0069]     a “win”, “place” or “show” bet that a market will be respectively the best, or within the top two best, or top three best, performing markets (in percentage terms) over a given period; and  
         [0070]     a “quinella”, “tierce” or “exacta” bet defined from their racetrack equivalents.  
         [0071]     An example of how the price of an expiry range bet might be calculated is as follows:  
         [0072]     The formula for the underlying asset price S is given by: 
 
 dS=mSdt+sSdz  
 
         [0073]     where m is the growth rate, s is the volatility, t is time and z is a variable that follows a Wiener process. The variable z can be understood by considering the changes in the value thereof over small intervals of time. Consider a small interval of time having a duration of dt and define dz as the change in z during dt. There are two basic properties that dz must have for z to be following a Wiener process:  
         [0074]     dz must be related to dt by the equation: 
 
Δ z=ε√{square root over (Δt)} 
 
         [0075]     where ε is a random drawing from a standardized normal distribution (i.e., a normal distribution with a mean of zero and a standard deviation of 1.0), and the values of dz, for any two different short intervals of time dt, must be independent.  
         [0076]     Solving this equation, we obtain: 
 
 S ( t )= S  exp(( m−s   2 /2) t+sz ( t )) 
 
         [0077]     where S(t) is the asset price at time t and S is the initial asset price.  
         [0078]     Let ρ be the probability of success of a bet in this model at expiry time t. The present value of this bet thus becomes: 
 
 P =exp(− rt )ρ
 
         [0079]     where P is the present value (or fair price) of the bet, r is the interest rate, and t is the time to maturity. We denote: 
 
 X   t =log( S ( t )/ S ) 
 
         [0080]     and  
       v   =     r   -   g   -       σ   2     2           
 
         [0081]     where S(t) is the asset price at time t, t is the time to maturity, S is the initial asset price, r is the interest rate, g is the dividend rate and s is the volatility.  
         [0082]     Then, the variable x is defined as  
       x   =         X   τ     -     v   ⁢           ⁢   τ         σ   ⁢     τ             
 
         [0083]     and is normally distributed with probability density:  
         f   ⁡     (   x   )       =       1       2   ⁢           ⁢   π         ⁢     exp   ⁡     (     -       x   2     2       )             
 
         [0084]     Now, we denote:  
         f   ⁡     (   y   )       =       1       2   ⁢           ⁢   π         ⁢     exp   ⁡     (     -       y   2     2       )             
 
         [0085]     and 
 
 N ( x )=∫ −∞   ∝   f ( y ) dy  
 
         [0086]     where N(x) is the cumulative probability of the normal distribution. Let S be al market price, and let  
       a   =         log   ⁡     (     U   S     )       ⁢           ⁢   and   ⁢           ⁢   b     =     log   ⁡     (     D   S     )             
 
         [0087]     where U and D are the up and down barriers of the bet respectively. The price of the expiry range bet, defined by U and D, is then given by:  
       P   =         ⅇ       -   r     ⁢           ⁢   τ       ⁡     [       N   ⁡     (       a   -     v   ⁢           ⁢   τ         σ   ⁢       (   τ   )           )       -     N   ⁡     (       b   -     v   ⁢           ⁢   τ         σ   ⁢       (   τ   )           )         ]       .         
 
         [0088]     Other formulae for different types of bets may readily be derived by employing the same principles. The type of formula employed is also not essential to the working of the system—many different methods of calculating odds exist, and any of these may be used in the system.  
         [0089]     Once the price of the bet defined by the bet parameters input by the user is determined, a house mark-up is added and the bet is offered to the user via the user terminal  3 . Since the system operates on real-time values derived from the constantly fluctuating markets, the customer is allowed only a short time in which to decide whether or not to purchase the bet at the calculated price. This time period is, preferably, no more than thirty to sixty seconds, and the offer is withdrawn after this time.  
         [0090]     If the user decides to purchase the bet, he or she will be prompted to input a username and password (if these were not input at an earlier stage). This information is verified by the central processing machine  1  and, if it is accepted, will check the credit balance of the user on the accounting system  11 . If this reveals that the user has sufficient funds to purchase the bet, the transaction with the user is effected and the bet is recorded on the data storage facility  7 .  
         [0091]     Each user of the system may, on entering his or her valid username and password, view a list of outstanding bets that he or she has placed on a user terminal  3 . In order to provide this list, the central processing machine  1  retrieves information regarding the user&#39;s previously placed bets from the data storage facility  7 . The central processing machine  1  must, for each previously placed bet, determine whether the bet has: already expired or fulfilled the conditions of the bet so that the user has won the bet; already expired or contravened the conditions of the bet so that the user has lost the bet; or has not yet reached the date or conditions of expiry. The central processing machine  1  derives this information by comparing the bet parameters with both real-time market information and historical market information for the relevant time period obtained via the data feeds  5 ,  6 . The status of each previously placed bet is passed to the user terminal  3  for display to the user. If the user has won any of the bets, the central processing machine  1  instructs the accounting system  11  to credit the user&#39;s account accordingly.  
         [0092]     The system may also be provided with a facility to offer to buy an unexpired bet back from the user. The price that is offered for a bet is calculated by first determining the value of the bet using similar techniques to those described above, with a house mark-up being included in the price. As described above, the user is given no more than thirty to sixty seconds to decide whether or not to accept the price offered before the offer is withdrawn.  
         [0093]     All of the transactions between the central processing machine  1  and the users of the system may be monitored by an administrator of the system at the management terminal  12 . This facility allows the administrator to ensure that the system is running smoothly and that the algorithms and/or models employed by the central processing machine  1  are producing appropriate results.  
         [0094]     As a further consideration, the administrator of the system may be concerned about his or her financial exposure and the system may accordingly include means to inform the administrator, in real-time, of the financial exposure via the management terminal  12 . This facility allows the administrator to “hedge” in the futures and options markets. There are four types of hedging ratio commonly used, namely the delta, theta, gamma and vega hedging ratios. These ratios, along with the appropriate hedging techniques, are well known in the art.  
         [0095]     In an alternative embodiment, the E-cash or credit card payment system  9  is replaced by a system that operates with “virtual” or “fantasy” money instead of real funds. In such an embodiment, bettors are allocated an initial amount of “fantasy” money to purchase bets. Successful bettors have the chance to win prizes or other benefits.  
         [0096]     As a further consideration, whether or not the payment system comprises real or “fantasy” money, the administrator of the system may wish to track the bettors who are consistently successful at forecasting the direction of the financial markets. The administrator knows that under the assumption of efficient markets, no person may consistently forecast the financial markets, and therefore successful bettors are simply those that have been successful by chance. However, tracking successful bettors may provide useful information for the administrator, such as useful clues for tracking down problems with this embodiment. The administrator may also sell or provide the information comprised of the ongoing bets of the successful bettors, to third parties who may choose to use or rely upon this information on the belief that the successful bettors have a special gift rather than being simply lucky.  
         [0097]     The betting system for calculating the fixed-price odds that may be offered to a prospective bettor is particularly well-suited to bets placed on the financial markets since the calculation of fixed-price odds is sufficiently difficult, time consuming and computationally intensive to make calculation thereof by humans inefficient for all but the largest of bets. The system described herein allows an administrator of the system to offer reasonable and well-calculated odds in real-time to individual speculators betting small sums of money on an almost unlimited number of eventualities, without the need to employ highly-skilled staff to do so. This service has not been available in the past.  
         [0098]     It will be obvious to those having skill in the art that many changes may be made to the details of the above-described embodiments without departing from the underlying principles thereof. The scope of the present invention should, therefore, be determined only by the following claims.