The present invention relates to cellular telephone handset devices, and more particularly to a mobile handset devices configured to change the length of text strings to fit a display.
Mobile handsets, such as cellular phones and PDAs, are becoming ever more useful information tools for users. Mobile handsets are also constantly decreasing in size. These two trends are in tension with each other as smaller display screens make it difficult to view large amounts of information at one time. Even simple message service (SMS) text strings may not fit on a display, requiring users to scroll to read such short messages.
In one aspect, a method for transforming a text string for display in a mobile device includes determining a maximum size for displayed strings, determining a length of the text string and transforming the text string so that the transformed text string fits within the maximum size for displayed strings. The method for transforming the text string may be accomplished using an automated string transformation method selected from the group consisting of deleting unnecessary words from the text string, replacing some words in the text string with abbreviations, deleting one or more letters from selected words in the text string, and identifying and deleting non-critical words from the text string. The method may further include transforming the text string further changing a font size or a font spacing. The automated string transformation method of deleting unnecessary words from the text string, may include selecting a word from the text string, comparing the selected word to a list of unnecessary words, and transforming the text string by deleting the selected word if the selected word substantially matches an entry in the list of unnecessary words. The automated string transformation method of replacing some words in the text string with abbreviations may include selecting a word from the text string, comparing the selected word to an abbreviation dictionary, and transforming the text string by replacing the selected word with an abbreviation of the selected word identified in the dictionary if the selected word substantially matches an entry in the abbreviation dictionary. The automated string transformation method of deleting one or more letters from selected words in the text string may include selecting a word from the text string, comparing the selected word to a list of word transformation rules, and transforming the text string by transforming the selected word if the selected word substantially matches a criteria in the list of word transformation rules. The automated string transformation method of identifying and deleting non-critical words from the text string may include diagramming the text string to identify a grammatical type and sentence element of each word in the text string, assigning priority values to the words in the text string according to their identified grammatical type and sentence element, and transforming the text string by deleting a word from the text string having a highest assigned priority. These methods may be repeated until all words in the text string have been selected or all words in the text string have been selected. The method may include determining a priority value for each of the automated string transformation methods within the groups of automated string transformation methods, and implementing automated string transformation methods in order of the determined priority value until the transformed text string fits within the maximum size for displayed strings.
In another aspect, a mobile device is provided including a display and a processor that is configured to perform operations for transforming a text string for display in a mobile device that includes determining a maximum size for displayed strings, determining a length of the text string and transforming the text string so that the transformed text string fits within the maximum size for displayed strings. The operations for transforming the text string may be accomplished by the processor using an automated string transformation process selected from the group consisting of deleting unnecessary words from the text string, replacing some words in the text string with abbreviations, deleting one or more letters from selected words in the text string, and identifying and deleting non-critical words from the text string. The processor may further transform the text string by changing a font size or a font spacing. The processor performed automated string transformation process of deleting unnecessary words from the text string, may include selecting a word from the text string, comparing the selected word to a list of unnecessary words, and transforming the text string by deleting the selected word if the selected word substantially matches an entry in the list of unnecessary words. The processor performed automated string transformation process of replacing some words in the text string with their abbreviations may include selecting a word from the text string, comparing the selected word to an abbreviation dictionary, and transforming the text string by replacing the selected word with an abbreviation of the selected word identified in the dictionary if the selected word substantially matches an entry in the abbreviation dictionary. The processor performed automated string transformation process of deleting one or more letters from selected words in the text string may include selecting a word from the text string, comparing the selected word to a list of word transformation rules, and transforming the text string by transforming the selected word if the selected word substantially matches a criteria in the list of word transformation rules. The processor performed automated string transformation process of identifying and deleting non-critical words from the text string may include diagramming the text string to identify a grammatical type and sentence element of each word in the text string, assigning priority values to the words in the text string according to their identified grammatical type and sentence element, and transforming the text string by deleting a word from the text string having a highest assigned priority. Processor may be repeat the transformation processes until all words in the text string have been selected or all words in the text string have been selected. The processor may further determine a priority value for each of the automated string transformation methods within the groups of automated string transformation methods, and implement the automated string transformation methods in order of the determined priority value until the transformed text string fits within the maximum size for displayed strings.
In another aspect, a mobile device may include a means for transforming a text string for display in a mobile device including a means for determining a maximum size for displayed strings, a means for determining a length of the text string and a means for transforming the text string so that the transformed text string fits within the maximum size for displayed strings. The means for transforming the text string may be accomplished using an automated string transformation means selected from the group consisting of a means for deleting unnecessary words from the text string, a means for replacing some words in the text string with abbreviations, a means for deleting one or more letters from selected words in the text string, and a means for identifying and deleting non-critical words from the text string. The mobile device may further include a means for changing a font size or a font spacing. The automated string transformation means for deleting unnecessary words from the text string, may include a means for selecting a word from the text string, a means for comparing the selected word to a list of unnecessary words, and a means for transforming the text string by deleting the selected word if the selected word substantially matches an entry in the list of unnecessary words. The automated string transformation means for replacing some words in the text string with abbreviations may include a means for selecting a word from the text string, a means for comparing the selected word to an abbreviation dictionary, and a means for transforming the text string by replacing the selected word with an abbreviation of the selected word identified in the dictionary if the selected word substantially matches an entry in the abbreviation dictionary. The automated string transformation means for deleting one or more letters from selected words in the text string may include a means for selecting a word from the text string, a means for comparing the selected word to a list of word transformation rules, and a means for transforming the text string by transforming the selected word if the selected word substantially matches a criteria in the list of word transformation rules. The automated string transformation means for identifying and deleting non-critical words from the text string may include a means for diagramming the text string to identify a grammatical type and sentence element of each word in the text string, a means for assigning priority values to the words in the text string according to their identified grammatical type and sentence element, and a means for transforming the text string by deleting a word from the text string having a highest assigned priority. The mobile device may also include a means for repeating the operations until all words in the text string have been selected or all words in the text string have been selected. The mobile device may include a means for determining a priority value for each of the automated string transformation methods within the groups of automated string transformation methods, and a means for implementing automated string transformation methods in order of the determined priority value until the transformed text string fits within the maximum size for displayed strings.
In another aspect, a computer program product is providing that includes a computer-readable medium including instructions for transforming a text string for display in a mobile device includes at least one instruction for determining a maximum size for displayed strings, at least one instruction for determining a length of the text string and at least one instruction for transforming the text string so that the transformed text string fits within the maximum size for displayed strings. The instructions for transforming the text string may include at least one instruction for deleting unnecessary words from the text string, at least one instruction for replacing some words in the text string with abbreviations, at least one instruction for deleting one or more letters from selected words in the text string, and at least one instruction for identifying and deleting non-critical words from the text string. The instructions may further include at least one instruction for transforming the text string further changing a font size or a font spacing. The automated string transformation instructions for deleting unnecessary words from the text string, may include at least one instruction for selecting a word from the text string, at least one instruction for comparing the selected word to a list of unnecessary words, and at least one instruction for transforming the text string by deleting the selected word if the selected word substantially matches an entry in the list of unnecessary words. The automated string transformation instructions for replacing some words in the text string with abbreviations may include at least one instruction for selecting a word from the text string, at least one instruction for comparing the selected word to an abbreviation dictionary, and at least one instruction for transforming the text string by replacing the selected word with an abbreviation of the selected word identified in the dictionary if the selected word substantially matches an entry in the abbreviation dictionary. The automated string transformation instructions for deleting one or more letters from selected words in the text string may include at least one instruction for selecting a word from the text string, at least one instruction for comparing the selected word to a list of word transformation rules, and at least one instruction for transforming the text string by transforming the selected word if the selected word substantially matches a criteria in the list of word transformation rules. The automated string transformation instructions for identifying and deleting non-critical words from the text string may include at least one instruction for diagramming the text string to identify a grammatical type and sentence element of each word in the text string, at least one instruction for assigning priority values to the words in the text string according to their identified grammatical type and sentence element, and at least one instruction for transforming the text string by deleting a word from the text string having a highest assigned priority. These computer-readable medium may further include instructions for repeat the various instructions until all words in the text string have been selected or all words in the text string have been selected. The computer-readable medium may further include instructions for determining a priority value for each of the automated string transformation methods within the groups of automated string transformation methods, and for implementing automated string transformation methods in order of the determined priority value until the transformed text string fits within the maximum size for displayed strings.
In another aspect, a method for transforming a text string for display in a mobile device, includes determining a desired size range for displayed strings, determining a length of the text string, diagramming the text string to identify one or more locations within the text string where words can be inserted without changing a meaning of the text string, assigning priority values to the identified locations for inserting words in the text string, and inserting a word into at least one of the identified locations for inserting words in the text string. The inserted word may be selected from a list of words. The method further include inserting a word into each of the one or more locations within the text string where words can be inserted according to the assigned priority until the text string satisfies the desired size range for displayed strings.
In another aspect, a mobile device includes a display and a processor that is configured to perform operations including determining a desired size range for displayed strings, determining a length of the text string, diagramming the text string to identify one or more locations within the text string where words can be inserted without changing a meaning of the text string, assigning priority values to the identified locations for inserting words in the text string, and inserting a word into at least one of the identified locations for inserting words in the text string. The processor may be configured to select the inserted word from a list of words. The processor of the mobile device may further be configured to insert a word into each of the one or more locations within the text string where words can be inserted according to the assigned priority until the text string satisfies the desired size range for displayed strings.
In another aspect, a mobile device includes a means for determining a desired size range for displayed strings, a means for determining a length of the text string, a means for diagramming the text string to identify one or more locations within the text string where words can be inserted without changing a meaning of the text string, a means for assigning priority values to the identified locations for inserting words in the text string, and a means for inserting a word into at least one of the identified locations for inserting words in the text string. The mobile device may further include a means for selecting the inserted word from a list of words. The mobile device may further include a means for inserting a word into each of the one or more locations within the text string where words can be inserted according to the assigned priority until the text string satisfies the desired size range for displayed strings.
In another aspect, a computer program product includes a computer-readable medium including instructions for transforming a text string for display in a mobile device, including at least one instruction for determining a desired size range for displayed strings, at least one instruction for determining a length of the text string, at least one instruction for diagramming the text string to identify one or more locations within the text string where words can be inserted without changing a meaning of the text string, at least one instruction for assigning priority values to the identified locations for inserting words in the text string, and at least one instruction for inserting a word into at least one of the identified locations for inserting words in the text string. The computer-readable medium may further include at least one instruction for selecting the inserted word from a list of words. The computer-readable medium may further include at least one instruction for inserting a word into each of the one or more locations within the text string where words can be inserted according to the assigned priority until the text string satisfies the desired size range for displayed strings.
The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate exemplary aspects of the invention, and together with the general description given above and the detailed description given below, serve to explain the features of the invention. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts or processes.
The various aspects will be described in detail with reference to the accompanying drawings. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the invention or the claims.
As used herein, the terms “handset” and “handheld device” refer to any one or all of cellular telephones, personal data assistants (PDAs), palm-top computers, laptop computers, wireless electronic mail receivers (e.g., the Blackberry® and Treo® devices), multimedia Internet enabled cellular telephones (e.g., the iPhone®), and similar personal electronic devices which include a programmable processor and memory. In a preferred aspect, the mobile handset is a cellular handheld device that can communicate via a cellular telephone network (e.g., a cellphone). However, cellular telephone communication capability is not necessary in all aspects. Moreover, wireless data communication may be achieved by the handheld device connecting to a wireless data network (e.g., a WiFi network) instead of a cellular telephone network.
As used herein, the terms “string” and “text string” refer to either or both of a sequence of characters or symbols, and a data structure capable of storing a sequence of characters or symbols. The length of a string and the length of a string both refer to the number of characters or symbols in a string.
When a document primarily consisting of a series of text strings, such as an SMS message, a mobile handset may wrap the string to a new line and/or require a user to scroll to see the entire string. While commonly employed, scrolling to read messages may not be handy sometimes and many strings contain information that is superfluous to the intended communication.
The various aspects provide methods for reducing the length of a text string by identifying less essential elements of the string and deleting them. The essentiality of string element ultimately depends on the perspective of the reader and the writer. However, general rules can be developed that allow mobile handsets to identify string elements that can be deleted or modified to shorten the string without changing its meaning. For example, an aspect intended for use with the English language may recognize that certain words can be abbreviated and still convey the same meaning.
In the various aspects, handheld devices may be configured with software designed to analyze and modify text strings to shorten their length to fit a display size. Such software may be implemented as a stand alone application, as part of a text processing application (e.g., an SMS application), as part of the operating system implemented on the handheld device, or as an application programming interface (API). To simplify the description, this software is referred to herein as a “string transformation engine.” The string transformation engine may be part of a larger text rendering engine. Such a rendering engine may be responsible for a number of tasks known in the arts such as rasterisation, which includes converting characters into a pixel map, or more advanced techniques such as antialiasing and sub-pixel rendering. The text rendering engine may be part of a suite of applications that form a user interface, or part of an application that renders text, such as a web browser. Some text rendering may be performed by applications that are not easily classified as user interfaces or stand-alone applications, such as the BREW software found on some mobile phones. The scope of the invention and the claims are not limited by the text rendering application or software. While several examples described herein refer to SMS messages, the same methods and devices may be implemented in a similar manner to any text strings, including, for example, e-mail, text documents, HTML encoded documents, multimedia messaging service (MMS), etc.
An example of how the various aspects may transform a string is shown in
An overview of the various example methods that may be implemented to transform text strings is illustrated in
If there is not enough space to display the text string without modification (i.e., determination block 115=“no”), the string transformation engine may transform the string to reduce the number of pixels characters, block 118. This may be accomplished incrementally in a series of transformations by repeating the process of determining whether the transformed text string will fit within the display, determination block 115, and further transforming the text string, block 118, as illustrated in
The string transformation (block 118) may be accomplished by sequentially applying a series of rule-based transformation as shown in
If the transformed string will not fit within the display (i.e., determination block 115b=no), the string transformation engine may reduce character spacing (i.e., the space between characters in the displayed string), block 125. Reducing character spacing may be accomplished by what is known in the typesetting arts as reducing kerning. The operation of reducing character spacing, block 125, is optional since in some mobile devices dynamic character spacing may not be possible or appropriate (e.g., if font transformation leaves too little space between characters). Reducing character spacing may be accomplished by applying a character spacing transformation rule to the text string. After the character spacing rule has been applied, the string transformation engine may again determine if there is enough room to display the transformed string, determination block 115c, by comparing the number of pixels or characters required to display the transformed string to the number of pixels or characters available in the display determined in block 102. If there is enough space to display the transformed string (i.e., determination block 115c=“yes”), then no more transformations are needed and the transformed text string is returned to the text rendering engine for display, block 105.
If the transformed string still will not fit within the display (i.e., determination block 115c=“no”), the string transformation engine may perform further transformations, such as deleting unnecessary words from the string, block 130. Unnecessary words are words that can be deleted without changing the meaning of the string. For example, articles such as ‘a’, ‘an’ and ‘the’ can be deleted from a sentence or phrase without affecting the readers ability to understand the remaining words. Applying a transformation rule that deletes articles to the example text string 20 ‘the quick brown fox jumps over the lazy dog’ results in the shortened text string ‘quick brown fox jumps over lazy dog’. Example processes and rules for deleting unnecessary words are discussed in more detail below with reference to
If the transformed string will not fit within the display (i.e., determination block 115d=“no”), the string transformation engine may perform further transformations, such as deleting unnecessary letters from the text string, block 135. Unnecessary letters are letters that can be deleted without changing the meaning of a word to a reader. This transformation operation may include replacing common words with standard abbreviations that most readers will recognize. For example, most users would recognize ‘avg’ as an abbreviation of average, and ‘bldg’ as an abbreviation for ‘building.’ This operation may also apply abbreviation rules to words so as to create abbreviations for words that are not commonly abbreviated. For example, most users would recognize ‘ovr’ as an abbreviation of ‘over’ within the context of the example text string 20. This operation may also delete or replace trailing letters in words, as words can often be recognized without such letters. For example, if the second-from-last letter of a word is a vowel and the word is four characters or more in length, that vowel may be deleted leaving a recognizable word. Applying this example transformation rule to the example text string 20 (which after the prior transformation reads ‘quick brown fox jumps over lazy dog’) would further transform the string to ‘quik brwn fox jmps ovr lzy dog.’ Despite shortening the string by 13 letters, the transformed string will be easily understood by many users as having the same meaning as the original text string 20. Example processes and rules for deleting unnecessary letters from words are discussed in more detail below with reference to
Optionally, the operation of deleting unnecessary letters from words, block 135, may be performed incrementally, such as by abbreviating one or more words and determining whether the so transformed string will fit the display, determination block 115e, and then repeating the process, block 135, to delete further letters only if the transformed string will not fit the display (as illustrated by the dashed arrow). In this manner, words can be abbreviated or shortened only as necessary to fit a transformed string into the display.
If the transformed string will not fit within the display after all unnecessary letters have been deleted (i.e., determination block 115e=“no”), the string transformation engine perform further transformations, such as deleting non-critical words from the base text string 20, block 140. A non-critical word is a word that is not necessary to convey the high-level semantics of the text string 20. Whether a word is critical to a text string may depend on many factors which may be implemented as a sequence of transformation rules. For example, a transformation rule may delete adjectives and adverbs on the presumption that only nouns and verbs are critical to the basic meaning of a sentence. Applying this simple transformation rule to example base text string 20 as transformed in the previous example results in the phrase ‘fox jmps ovr dog’. Non-critical word deletal transformation rules may take advantage of the well-defined semantics of the English language. For example, a noun can be the subject of a sentence or the object of the sentence. Many users would find both the subject and the object of the sentence to be critical. However, a noun can also be the object of a prepositional phrase, which may not be critical to understanding the meaning of some sentences. Example processes and rules for deleting non-critical words is discussed in more detail below with reference to
Operations or transformation rules that delete unnecessary words should delete only those words not critical to the meaning of a phrase. Since determining the meaning of a word within the context of a sentence is computational costly, this operation or transformation rule may be limited to words that generally do not carry significant meaning regardless of their position in a sentence. By limiting the transformation rule to deleting only such low-meaning words can obviate a need to analyze sentence structure. This type of transformation rule may be implemented using a look-up table or dictionary of unnecessary words, which may be merely a list of words stored in memory. For ease of reference, a look-up table or list of words used for such purposes is referred to herein as a “dictionary.” A data structure that can serve as a dictionary for such purposes is discussed below with reference to
It should be appreciated that the order of transformation operations illustrated in
Additionally, the operations illustrated in
Operations for deleting unnecessary words based on a dictionary are illustrated in
If the selected word substantially matches an entry in the unnecessary word dictionary (i.e., determination block 160=“yes”), then the word may be deleted from the text string, block 165. The operation may then determine if there is another word in the text string to analyze, determination block 170. If the selected word does not substantially match an entry in the unnecessary word dictionary, indicating that the word is not unnecessary (i.e., determination block 160=“no”), the operation does not delete the word and determines if there is another word in the string, determination block 170. If there are no more words in the text string (i.e., determination block 170=“no”), the entire string has been analyzed so the operation may return to the higher level process, block 180, such as by returning to the text transformation engine processing if the operation is implemented as a subroutine or function call.
If there is another word in the string (i.e., determination block 170=“yes”), the operation may determine if further transformation processing is required by determining if the transformed string can fit within the display, determination block 115 as described above with reference to
The determination of whether a transformed string will fit within the display (i.e., determination block 115) is optional and may not be implemented because stripping out some but not all unnecessary words might result in transformations that are distracting to some users. In such an implementation, the operation may proceed directly to select the next word for analysis, block 175, if there are more words in the string (i.e., determination block 170=yes).
As previously discussed, an operation of deleting unnecessary letters from words may involve identifying letters in a word that are not critical for a user to recognize the word or involve replacing words with common abbreviations. Such transformation rules may utilize one or more data structures that store common abbreviations and other abbreviation rules. Examples of such data structures are discussed below with reference to
Referring to
If the selected word does not substantially match an entry in the abbreviation dictionary, indicating that there is no common abbreviation for the selected word stored in the dictionary (i.e., determination block 160=“no”), the operation may determine if there are any abbreviation rules that can be apply to the first word by querying an abbreviation rules list, block 195, and analyzing the results of the query, determination block 160. As previously discussed, abbreviation rules may include pattern-based rules that can be used to identify letters that can be deleted. For example, since most users will recognize ‘swimmn’ as meaning ‘swimming,’ one abbreviation rule may be that for words ending in ‘ming’, replace ‘ming’ ‘n’. Further details regarding implementing abbreviation rules are discussed below with reference to
The determination of whether a transformed string fits within the display (i.e., determination block 115) is optional and may not be implemented because abbreviating some but not all words might result in transformations that are distracting to some users. In such an implementation, the operation may proceed directly to selecting the next word, block 175, if there are more words in the string to be analyzed (i.e., determination block 170=“yes”).
As previously discussed, the various operations may utilize data structures to transform text strings, examples of which are illustrated in
As discussed above with reference to
As discussed above with reference to
As discussed above with reference to
While
As discussed above with reference to
The rules for assigning words a priority for deletion based on the parse tree may be implemented in a table look-up method using a data table such as shown in
The criticality priority table 215 also illustrates how the operation of deleting unnecessary words can be combined with the operation of deleting non-critical words. For example, data records 78 and 79 indicate that articles (e.g., ‘a’, ‘an’, ‘the’, etc.) are assigned high priority for deletion as compared to other parts of a sentence. Thus, the operation described above with reference to
In another example implementation of a string transformation engine, the basic operations of reducing font size, reducing character spacing, deleting unnecessary words, deleting unnecessary letters from words, and deleting non-critical words described above with reference to
The method described above with reference to
The basic methods may be modified and implement in order to expand strings, such as to expand the length of the string. This may be beneficial to the user experience by making text more readable, or more entertaining. An example method for expanding a string is illustrated in
If the length of the string is sufficient to meet the display criteria or length (i.e., determination block 415a=“yes”), the mobile handset may display the string, block 405. If the string length is not sufficient (i.e., determination block 415a=“no”), the mobile handset may begin the expansion process by diagramming the sentence represented by the text string in a manner similar to that discussed above with reference to
The processing methods described above for transforming text strings, either to reduce or expand their length, may be accomplished any time prior to display, including in parallel to the creation of the string (e.g., while a user is typing the string). In the case of strings communicated from/to mobile devices, the string transformation methods may be applied to text strings before they are transmitted to a mobile device, as well as to strings received by a mobile device.
The methods described above may be implemented on any of a variety of mobile handsets. Typically, such mobile handsets will have in common the components illustrated in
The hardware used to implement the foregoing methods may be processing elements and memory elements configured to execute a set of instructions, wherein the set of instructions are for performing method operations corresponding to the above methods. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.
Those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm operations described in connection with the methods 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 operations 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 present invention.
The operations of a method or algorithm described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. The software module may reside in a processor readable storage medium and/or processor readable memory both of which may be any of RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other tangible form of data storage medium known in the art. Moreover, the processor readable memory may comprise more than one memory chip, memory internal to the processor chip, in separate memory chips, and combinations of different types of memory such as flash memory and RAM memory. References herein to the memory of a mobile handset are intended to encompass any one or all memory modules within the mobile handset without limitation to a particular configuration, type or packaging. An exemplary storage medium is coupled to a processor in either the mobile handset or the theme server 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 or mobile device. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal or mobile device. Additionally, in some aspects, the operations and/or actions of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a machine readable medium and/or computer readable medium, which may be incorporated into a computer program product.
The foregoing description of the various aspects is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the aspects shown herein, and instead the claims should be accorded the widest scope consistent with the principles and novel features disclosed herein.