Abstract:
A system for serving digital games to clients has an Internet-connected server, a digital data repository coupled to the Internet-connected server, the data repository storing digital resources for playing a plurality of games on a computerized appliance; and software executing on the Internet-connected server from a non-transitory physical medium, the software providing a first function determining for a specific client a list of games by probability of subsequent client selection, a second function causing transmission of resources for the list of games determined by the first function, directed to a computerized appliance associated with client, beginning with the most probable game in the list.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention is in the field of network gaming and pertains particularly to methods and apparatus for predicting game selection and pre-caching game resources relative to those predicted selections. 
         [0003]    2. Discussion of the State of the Art 
         [0004]    In the art of network-based gaming, it is desirable that games selected by clients download quickly with minimal load time on the client machine. In typical application, a content server analogous to a game server serves the game scripting and resources to the client machine to enable loading of a selected game. Much opportunity for delay in the game-loading process exists. Typically a client&#39;s browser is served the universal resource locator (URL) and other information to retrieve the game resources. The user operating the client machine then waits while the game metadata (often XML) is retrieved and the game resources including sounds, images, assets and other resources are loaded before the user may enter and play the game successfully. The imposed wait period or delay can be substantial for many clients, adding a few to several minutes of idle time before the game is playable on the client&#39;s machine. 
         [0005]    Therefore, what is clearly needed is a system and methods for predicting game selection and pre-caching the most probable game resources before a game is selected. A system such as this may reduce or eliminate delays in loading game resources from a remote content server. 
       SUMMARY OF THE INVENTION 
       [0006]    The problem stated above is that expediency of game loading is desirable for an Internet gaming machine, but many of the conventional means for obtaining and loading game content, such as by requesting and subsequent downloading, also create delay. The inventors therefore considered functional elements of a gaming system, looking for elements that exhibit interoperability that could potentially be harnessed to provide more expedient game content loading but in a manner that would not add delay. 
         [0007]    Every network-based gaming system is driven by numerous gaming clients accessing and playing individual games, one by-product of which is an abundance of gaming content that must be downloaded to client gaming applications before play can commence. Most such systems employ Web servers and gaming servers including software to orchestrate active game streaming to multiple clients playing a game, and server/client applications are typically a part of such apparatus. 
         [0008]    The present inventor realized in an innovative moment that if, prior to game selection, gaming content relative to one or more games that a client is most likely to select could be downloaded and pre-cached to the client machine for quick load, significant delay in launching a next game might be reduced or eliminated. The inventor therefore constructed a unique predictive system for Internet gaming that allowed gaming content deemed most relative to a client&#39;s probable game selection to be downloaded to the client machine and pre-cached for faster game loading. A significant reduction in time to load results with no impediment to the gaming experience. 
         [0009]    Accordingly, in an embodiment of the present invention, a system for serving digital games to clients is provided, comprising an Internet-connected server, a digital data repository coupled to the Internet-connected server, the data repository storing digital resources for playing a plurality of games on a computerized appliance, and software executing on the Internet-connected server from a non-transitory physical medium, the software providing a first function determining for a specific client a list of games by probability of subsequent client selection, a second function causing transmission of resources for the list of games determined by the first function, directed to a computerized appliance associated with client, beginning with the most probable game in the list. 
         [0010]    In one embodiment the data repository includes client game-selection history, and probability of game selection is based in part on the client game selection history. Also in one embodiment the data repository includes client demographics, and probability of game selection is based in part on the client demographics. In another embodiment the data repository includes statistics regarding game popularity among multiple clients, and probability for game selection is based in part on the popularity statistics. In yet another embodiment the data repository includes information on game component purchase history, and probability of game selection is based in part on the game component purchase history for the client. The resources may comprise one or more of metadata, scripting, images, audio, and game objects. 
         [0011]    In some cases resources from more than one game are transmitted serially from most probable to least probable for the listed games. In some cases resources from more than one game are transmitted in parallel, sharing a single path or over plural pathways. In some cases there is a selection feedback channel for reporting client game selection in real time. Also in some embodiments client navigation is tracked in a game, and the probability of game selection in based in part on the client navigation. 
         [0012]    In another aspect of the invention a method for serving digital games to clients is provided, comprising the steps of (a) determining for a specific client a list of games by probability of subsequent client selection; and (b) causing transmission of resources for the list of games determined by the first function, directed to a computerized appliance associated with specific client, beginning with the most probable game in the list. 
         [0013]    In some embodiments of the method determination in step (a) includes client game-selection history. Also in some embodiments determination in step (a) includes client demographics. Further in some embodiments determination in step (a) includes statistics regarding game popularity among multiple clients. In still other embodiments determination in step (a) includes information on game component purchase history. In embodiments of the invention the resources comprise one or more of metadata, scripting, images, audio, and game objects. 
         [0014]    In some cases resources from more than one game are transmitted serially from most probable to least probable for the listed games. In other cases resources from more than one game are transmitted in parallel, sharing a single path or over plural pathways. In still other cases there is a mechanism for gathering client game selection in real time via a feedback channel, and client navigation may be tracked in a game, and the probability of game selection in based in part on the client navigation. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWING FIGURES 
         [0015]      FIG. 1  is an architectural overview of a gaming network supporting game prediction and pre-caching of game resource according to an embodiment of the present invention. 
           [0016]      FIG. 2  is a block diagram illustrating the process of pre-caching gaming content relative to predicted games according to an embodiment of the present invention. 
           [0017]      FIG. 3  is a process flow chart illustrating steps for predicting client game selection and pre-caching game resources for fast game loading according to an embodiment of the present invention. 
           [0018]      FIG. 4  is a process flow chart illustrating steps for generating a hierarchical game list for a client machine to enable pre-caching of game resources before game selection according to an embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0019]    The inventors provide a unique system and methods for predicting game selection on behalf of a client machine and pre-caching most relevant game resources on the client machine in advance of game selection by the client. The present invention will be described in enabling detail using the following examples, which may describe more than one relevant embodiment falling within the scope of the present invention. 
         [0020]      FIG. 1  is an architectural overview of a gaming network  100  supporting game prediction and pre-caching of game resources according to an embodiment of the present invention. Gaming network  100  includes a wide area network (WAN) represented herein by a network backbone  101 . Network  101  may in one embodiment, be the Internet network. In another embodiment, network  101  may be a municipal area network (MAN), a corporate WAN or another network without departing from the spirit and scope of the present invention. In this Internet embodiment backbone  101  represents all of the lines, equipment, and access points that make up the Internet as a whole. Therefore, there are no geographic limitations relative to the practice of the present invention. 
         [0021]    Internet  101  supports a Web server (WS)  104  that includes a non-transitory physical storage medium that is adapted to store all of the software and data required to enable function as a Web server serving hosted Web pages to clients upon request. WS  104  may be hosted by a third-party service or by a network gaming company. A gaming Website  111  is available through accessing server  104 , the Website served upon request. In a preferred embodiment, Website  111  is a gaming Website adapted to register clients for building and playing network-based games. Web server  104  typically enables clients to select games from a list or catalogue. 
         [0022]    In this embodiment Web server  104  further includes a load-ahead-service (LAS) software application  112  executing from the non-transitory physical medium. LAS  112  is adapted to make a list of games that the client has a high probability of selecting. LAS  112  may include several variant plug-in modules (not illustrated here) that are enabled to use existing statistics about the client to determine from a pool or collection of individual games, which games are most likely to be selected for play by that specific client. 
         [0023]    Network backbone  101  in this embodiment supports a customer information system (CIS)  105 . CIS  105  includes a non-transitory physical medium that contains all of the software and data required to enable function as a customer information system server. CIS  105  has connection to a client database  106 . Client database  106  includes information about clients including, but not limited to membership status, contact information, payment history, purchase history, demographics, game-playing history, friends list, and personal preferences relative to service interaction. 
         [0024]    Network backbone  101  supports a gaming server (GS)  107 , also termed a content server in the art. GS  107  includes a non-transitory physical medium that stores all of the software and data required to enable function as a gaming server. GS  107  serves games to clients upon request and maintains and propagates game state changes as clients play a game. GS  107  has connection to a gaming content repository  108  that is adapted to contain game resources for games hosted by the server. There may be more than one server in a game content delivery network without departing from the spirit and scope of the present invention. One server is illustrated here and is deemed sufficient for explanatory purposes. Gaming content may include but is not limited to, images, sounds, animations, assets, metadata, scripting, and so on. In normal practice, GS  107  may be linked by resource address to Website  111  for every game presented on the Website for play that the server hosts. 
         [0025]    Carrier network  102  may be any wired or wireless network capable of serving as a sub-network to Internet network  101 . Carrier network  102  may be a cellular network, a wireless fidelity network (WiFi), a local area network (LAN), a cable network, a fiber optics network, or a public switched telephone network (PSTN) without departing from the spirit and scope of the present invention. In this example, gaming appliances  109 ( a - n ) are illustrated as connected to Internet  101  via carrier network  102 . A gaming appliance may include an android device, a hand-held game machine, a personal computer (PC), a laptop, a gaming box connected to a cable or satellite television network, or any other appliance adapted to play Internet-based games. Appliance  109   a  is a hand-held gaming appliance, appliance  109   b  is a personal gaming computer, and appliance  109   n  is a game box connected to a flat screen television. There are numerous and variant possibilities. 
         [0026]    Client software applications  110 ( a - n ) execute on the gaming appliances  109 ( a - n ). Each client application may be customized to the appliance and platform from upon which it executes. Each appliance includes a non-transitory physical medium to host and enable local execution of the client applications. Client appliances  109 ( a - n ) are illustrated as connected to an Internet service provider (ISP)  113 , which may in some cases be a wireless ISP (WISP). ISP  113  enables Internet access through a media gateway  103 . This example is logical only and may not represent actual Internet connectivity architecture for all appliances. There are several different ways to connect to the Internet using wired and wireless technologies known in the art and available to the inventor. Each appliance  109 ( a - n ) is illustrated as in progress of game play. Game selection predictions may be initiated before a user starts any game, and after a user has selected and entered an existing game, a purpose is to predict the next game the user will select for play. 
         [0027]    In practice, a user, such as one operating appliance  109   a,  connects to Website  111  through carrier network  102 , W/ISP  113 , and media gateway  103 . The user performs a login and may browse games to play from a games page or other games presentation page. In one embodiment a user may search for games to play wherein the gaming links (link to actual game) are returned in a search list. Once the user has been identified at the Website, information about that user may be retrieved and the load-ahead service (LAS)  112  is launched for that user. 
         [0028]    In one embodiment, LAS  112  is launched upon recognition of the user before the user has selected any game to play. LAS  112  may incorporate several plug-in modules that depend upon different criteria for weighting games from a standard pool or list of games. More information about various plug-in modules is detailed later in this specification. However, some plug-in modules are developed after some specific information becomes known about the user and thus may be used to help determine a hierarchical list of games the user is most likely to select. Other plug-in modules are stock and depend upon criteria that may not involve user data, such as most-played games or most popular games in general. One or more plug-in modules may contribute weights or scores assigned to specific games. Games receiving top weights are aggregated into a priority listing of the most probable games the user will select. LAS  112  may run over Website  111  or it may be executed by a different service linked by the Website. 
         [0029]    Client software  110   b  executing from gaming device  109   a  provides a function for receiving game suggestions (prioritized game list) from Website  111  and a function for initiating download from a content server such as game server  107  of game resources associated with one or more of the top suggested games. Downloaded content is pre-cached in the media cache on the appliance and therefore may be loaded out of cache locally if the user selects one of the predicted games. The number of predicted games served in a prioritized list may vary according to appliance capacity, cache size and other factors. Three games might be served in a list of games for one user while five or more games may be served in a list of games for another user. A user may also set a preference, such as serve the top five most relevant games only. 
         [0030]    The client application consumes the list, including a URL to the content server and identification of the game resources required to load the individual games. The client application connects to the game server or content server and initiates download of the most relevant content automatically. The download activity occurs in the background and may be transparent to the client relative to download progress. However in one embodiment, the appliance display may publish the most relevant game recommendations and current download status of the game data associated with each of the games. It is important to note that game resources may be downloaded in the background while the user is currently playing a game. An object of the invention is that during the time that the user is occupied in game play, the resources for the game that the system predicts the user will select next are being cached locally and will be available upon the user&#39;s next game selection. The result (if user selects a predicted game) is that the game immediately loads from local cache, thereby reducing or eliminating traditional loading time for remote games. 
         [0031]    Cached game data and resources are held in cache under typical cache strategies for aging and cache size. For example, if all of the game elements assigned to a game on the predictive game list are in cache, but the user does not select the game to play, the elements will eventually age out of cache. Cache size may be a factor in determining how many games may be pre-cached at one appliance. In one embodiment elements that are generic to more than one game on the list may be downloaded once to avoid redundancy. Such elements may be spared from purge in cache if shared by more than one game. Any information known about the user may be incorporated to help predict which games a user will likely select. 
         [0032]    Data categories that may be tapped include client demographics, client game selection history, client spending patterns, client skills level, client-stated preferences, client game search history, and so on. Stock plug-in modules may simply rely on public information gathered across the service like most played games, most popular games, most popular games played by friends of the user, and so on. In the case of multiple plug-in modules, weights assigned to specific games may be combined to generate a hierarchical game list with the most probable games at the top of the list. 
         [0033]    In one embodiment, client SW  110 ( a - n ) includes a feedback channel that reports current client/user activity back to LAS  112 . This data may be propagated to relevant plug-in modules in order to refine weighting. Each plug-in module fires one or more algorithms based on native data that results in a weight or score for each game relative to the likelihood of a user selecting that game. The scores are propagated to LAS  112 , which in turn identifies and lists the top tier games after analyzing the scores from each active plug-in. For example, a single game may be weighted by more than one plug-in module while another game is weighted by only one plug-in module. A content download occurring in the background may be orchestrated in parallel fashion or in serial fashion. 
         [0034]      FIG. 2  is a block diagram  200  illustrating the process of pre-caching gaming content relative to predicted games according to an embodiment of the present invention. Diagram  200  includes a game appliance  109  displaying a current game  201  in progress. Game  201  may have or may not have been predicted by the system. Client appliance  109  has a feedback channel to a client activity statistics (CAS) database  202 . CAS  202  reports directly to LAS  112  and is forwarded to the relevant plug-in modules. In this example, plug-in modules  205 ( a - n ) contribute weighting for each of the relevant games being “scored”. A game list generator  204  is provided for generating a hierarchical list of games based on data input from the plug-in modules. 
         [0035]    In this example, there are several operating plug-ins  205 ( a - n ) adapted to process different categories of data. Reading from left to right, a teleport probability engine is provided as a plug-in. A teleport or multi-port gaming system known to the inventor includes hyperlinks to other games such as are executable through a portal, a mirror, a level, a wall or other game feature. A teleport system is able to track a user as the user jumps from game to game. The system uses a soft counter to calculate how many times a user has traversed specific teleport pathways (from one game to another). A history is developed showing the navigation patterns of the user between teleport-accessible games. 
         [0036]    The probability that a user chooses a specific teleport is computed as a function of (a) that teleport&#39;s count, (b) the total count of all teleports, and (c) the total visits to the game. The probability engine returns the N most likely games the user will go to next based on the behavior of that user and other previous users. The teleport probability engine may assign a score or weight to a game based on how many times it has been visited through teleporting navigation. 
         [0037]    Other plug-ins connected to LAS  112  include a game popularity engine  205   b.  Game popularity engine  205   b  is a stock or “service provided” plug-in that calculates the top most popular games among users by counting the times that the games were played over a defined period. Engine  205   b  may include one or more subcategories such as the overall most popular games, games most popular to friends of the user, etc. A personal game recommendation engine  205   c  may assign weights to games that are deemed more probable for selection based on user personal data and monitored user activities. A sales-driven game recommendation engine  205   d  may assign weights to games based on sales of assets or accessories associated with the game. This may be a system plug-in adapted to create weight for games that have high sales numbers associated with them. 
         [0038]    A skills-based game recommendation engine  205   e  provides weights assigned to games based on skills level of the game relative to skills level of a user (if available to the system). For this plug-in skill levels of the user are recorded and made available to the module. In this case each game may be rated by a skills-rating system and the plug-in attempts to predict that the user will select a game matching his or her skills level. Plug-in  205   n  represents any other derived plug-in that may assign a weight to a game based on available data. There are many variant possibilities. 
         [0039]    The final list may be published to the user as “games recommended” or the user may not see the list. Publishing the list implies that the system prompts the user to select a game from the list. This might be more appropriate if there are up-sale opportunities or cost-saving opportunities to the service provider involved in the recommended games. In typical application though, the system is “predicting” the next game selection of the user and downloading the game elements relative to the predictive game candidates to cache, such that in the event the prediction is correct, less load time delay will occur on the client&#39;s machine. A pure predictive system may not publish the list to the user, as that may negatively affect the ability to accurately predict future game selections. 
         [0040]    Appliance  109  has a cache system  203  that may be optimized by client SW functionality. In this example, after receiving weights for games by plug-in modules  205 ( a - n ), LAS  112  combines scores to determine the top games the system predicts that the user has the highest probability of selecting. The top few to several games are listed for the client by game list generator  204 . Cache  203  is actively caching metadata and game resources for a game A, a game B, and a game C. In this example, a logical status indication (shaded boxes) for each game shows progress of caching of the relevant elements. 
         [0041]    Based on shading, it can be seen that resources for game A are mostly cached with game B running second and game C having the least data cached at the point in time of observation. It follows that game A is the most probable game the user will select next followed by game B and then by game C. If the prediction is correct and the user selects game A, B, or C (the top three weighted games), the games load from local cache, reducing or eliminating delay time relative to loading game elements from a remote server after game selection. 
         [0042]      FIG. 3  is a process flow chart  300  illustrating steps for predicting client game selection and pre-caching game resources for fast game loading according to an embodiment of the present invention. In step  301 , a user is detected on a game presentation page of a Website hosting game play. At step  302  the system identifies the user. This may be accomplished during login before the user plays any games at the site. At step  303  the system determines whether the client is a new client (first time) or a repeat client. If the user is a new client and there is no current information known about the client, the system may gather demographics about the client using a registration process, a questionnaire, or other suitable methods. 
         [0043]    In the case of a new client, demographic information will enable game selection prediction using stock plug-in modules that do not depend on client history with the service for game selection prediction. If the system determines that the client is a repeat client at step  303 , then there is recorded history of the client and the additional history data can be tapped to enable other more customized plug-in modules to the load-ahead service (LAS). After gathering demographics for a client that is new or a first time user, the process moves to step  305  wherein the load-ahead service application is launched for that client. If the system determines that the client is a repeat client the load-ahead service is immediately launched for that client. The load-ahead service (LAS) application may be installed over the Website as a functional application that works with a client on the accessing gaming appliance. 
         [0044]    At step  306 , the load-ahead service loads game suggestion or recommendation plug-ins based on categories of information known by the system about the client. In this regard, the load-ahead service is customized or personalized for each client. At step  307 , the load-ahead service generates a list of games that is communicated to the client application over the network. The communication may include the priority status of the game predictions and the URL for initiating content download. At step  308 , the client application initiates download of the most relevant game content. The process of retrieving the game content happens in the background in one embodiment and is transparent to the client. 
         [0045]    It is noted herein that the load-ahead service application may be run for a client before that client has selected any games to play. It is possible however that the client selects and enters a game before the load-ahead service is launched. In this case the service seeks to predict the client&#39;s next game selection. In this embodiment, feedback from the current gaming activity on the part of the client may be propagated to the service for updating plug-in modules. 
         [0046]    The client application downloads the content in serial or parallel fashion. In serial fashion the content relative to the most probable game on the list is downloaded completely before content from the next probable game on the game list. In parallel fashion, the client application downloads content for a specified number of the most probable games simultaneously as described in  FIG. 2  above. Three or more channels may be opened by the client application for downloading game elements consisting of images, XML, sounds, assets, and so on. Shared elements may be cached once to avoid redundancy. 
         [0047]    At step  309 , the client application caches the game content as it is downloaded. At step  310  the user operating the gaming machine makes a game selection. At step  311 , the client application determines if the selected game is on the communicated game list of predicted games. If the client selects a game that was not predicted, at step  313  the client applications initiates download of those game elements from the remote server. However, there may be some shared game elements already in cache. In this case the cached elements are loaded from local cache and may not be downloaded from the remote server. 
         [0048]    The system monitors the user activity relative to the game being played at step  314  once the user has entered the game. The activity may include game navigation, teleport activity, purchase activity, and so on. The data collected from the user activity is reported to the load-ahead service at step  315  in the background transparent to the user. The data is then propagated to the appropriate plug-in modules for refining game weighting. Elements in cache relative to games that were not selected are eventually purged from cache in the event that the user selects a game not on the list or in the event that the user decides not to select a game. 
         [0049]    If a user selected a game on the communicated game list of predicted games at step  311 , the elements for that game are loaded from local cache at step  312  instead of initiating download from the remote server. Elements not yet cached (download in progress) will be loaded immediately once they hit the cache. In one embodiment, if a user selects a listed game that has elements currently being cached, other games whose elements are also being cached may be paused from download to devote the rest of the bandwidth to download of only the elements of the game being loaded. At step  314 , the system monitors the user activity once the user has entered the game. The activity data is forwarded to the load-ahead service at step  315  where it is distributed appropriately to refine future predictions. 
         [0050]    It will be apparent to one with skill in the art that a load-ahead service for a user may include one or more plug-in modules without departing from the spirit and scope of the present invention. The more experience the user has with the system results in more accurate and personalized game predictions as a wider base of data is available to refine the process. In one embodiment, the games prediction list may evolve consistently while the user plays games with periodic updates to the list. Formerly predicted games on the list may be bumped by new games if game weighting and subsequent analysis by the game list generator finds new games that rate higher than any previously listed games. In one embodiment, all games listed in the communicated predictive games list have elements being cached once the client application receives and deciphers the list. In this embodiment, if the user selects a listed game, at least some or the components have already been cached avoiding unnecessary delay for the user. In one embodiment, the list is encrypted for privacy concerns and is decoded at the client end. 
         [0051]      FIG. 4  is a process flow chart  400  illustrating steps for generating a hierarchical game list for a client machine to enable pre-caching of game resources before game selection according to an embodiment of the present invention. At step  401  the client application sends a request to the load-ahead service for predicted games. This transaction may be part of a periodic polling of the look-ahead service asking the service to update the predictive games list. At step  402 , the load-ahead service may load plug-in modules used to gauge probability for individual games available to the client. In one aspect of the process, the client plug-ins are already loaded when the system detects the client on the gaming site. In one embodiment, the user, for example, may manage plug-ins by adding and deleting certain plug-in modules or creating new plug-in modules. 
         [0052]    At step  403 , each individual plug-in loads its probability data including any recent updates. Probability data is analogous to any category of client data already known by the system. At step  404 , each individual plug-in docked with the load-ahead service calculates and assigns weights to available games based on its own category of client data. The system may rate many different games available to the client before a top number of most probable game selections are determined. For example, a list of 100 games available to the client may be weighted at the load-ahead service before a list containing perhaps the five most probable games is communicated to the client application. 
         [0053]    At step  405 , each plug-in module reports its top game predictions to the load-ahead service based on its own data resource. Plug-in modules may be constrained to a certain number of games that they may list. Plug-in modules are not interdependent. That is to say that recommendations of one plug-in may not match another. Likewise, some plug-in module may share games designation. At step  406 , the load-ahead service receives data from all of the installed and active plug-ins and analyzes the data to determine a top probability games list containing three to several weighted games in hierarchical order of weight or score. 
         [0054]    Contributions from all of the plug-in modules may be incorporated into a final determination. In one embodiment, the determination of the top most probable selections may be made by adding weights assuming some games will be mentioned by more than one plug-in module. In one embodiment, games that are returned by only one of many plug-in modules may be thrown out in favor of games mentioned by at least two plug-in modules. Scores or weights assigned to a game by multiple plug-in modules may be averaged to determine one weight for a same game. 
         [0055]    At step  407 , the load-ahead service sends the generated games list to the client before the user has made a next game selection. If a client makes a selection before receiving the generated list, the list may still be sent and may still be relevant for the next selection. As time progresses, the system becomes more accurate and is able to predict a user&#39;s next selection with increasing accuracy. The user will have a better experience as less time is spent waiting for a game to load if the user selected any game on the returned list of predicted games. 
         [0056]    It will be apparent to one with skill in the art that the game selection predictive system of the invention may be provided using some or all of the mentioned features and components without departing from the spirit and scope of the present invention. It will also be apparent to the skilled artisan that the embodiments described above are specific examples of a single broader invention that may have greater scope than any of the singular descriptions taught. There may be many alterations made in the descriptions without departing from the spirit and scope of the present invention.