SYSTEM FOR DEVELOPING USER INTERFACE THEMES
BACKGROUND OF THE INVENTION
Field of the Invention
The present invention relates generally to human-computer interaction. In particular,
the present invention relates to a system and method for defining themes based on a common
user interface model for interacting with a computer information service.
Description of the Related Art
Computer information services today offer a variety of services to their subscribers.
For example, subscribers of the CompuServe® Information Service may retrieve information
from a repository maintained by the service or possibly, by a third party provider. In
addition, CompuServe subscribers may communicate with other subscribers.
Communications may occur in real time as subscribers initiate and join ongoing "chat"
sessions managed by the information service. CompuServe subscribers may also
communicate directly with one another as well as with non-members via electronic mail
(email.) Special interest forums within CompuServe also provide opportunities for
subscribers to communicate with one another. Internet and World Wide Web access provide
CompuServe subscribers with additional information sources to search and another
community of computer users with which to communicate. Finally. CompuServe subscribers
may perform specialized tasks such as shopping and banking online.
Computer information services today generally take advantage of graphical user
interface technology in designing and implementing a user interface that allows subscribers to
access the service and perform desired tasks. A graphical user interface enables a subscriber to interact with the information service by operating a computer mouse or trackball to select
pictorial representations of information items or tasks. For example, a subscriber may select
a "Shopping" button to enter an online shopping mall or a "Home/Leisure" button to locate
information about a favorite hobby. Alternatively, a subscriber may select a menu item or
series of items to accomplish a specific task. For example, a subscriber may select the menu
item "Read mail" in order to read any new email messages. In general, combinations of
buttons and menu items are presented to subscribers to assist them in "navigating" to a particular area or destination. Subscribers navigate to an area of the information service in
which they may accomplish a specific goal such as locating needed information or
performing a desired task.
Alternatively, subscribers may choose to access online services using communication
software that was not designed for accessing any particular online service. For example, a
subscriber may choose to use a terminal emulation package for accessing a service. Tasks are
accomplished by selecting items from menus or typing in commands. Although adequate,
such user interfaces have fewer visually appealing characteristics and in general, are more
difficult to use than graphical user interfaces, especially those developed by the service
provider. Furthermore, as information and services are added, the menus become more
complex and subscribers must traverse through more of them to find specific items. If
subscribers do not know the location of a particular item, they are forced to search through all
the menus, possibly at a number of levels, in order to locate the desired item.
Although the advent of the graphical user interface has made computers easier to use,
subscribers to online services still experience difficulties in navigating the system.
Traditionally, online services have customized their user interfaces for interactions with their
own services, but they have not tailored their user interfaces to the specific needs and
interests of their subscriber base. Novice, intermediate, and advanced subscribers are
expected to use the same user interface even though their levels of expertise differ. In
addition, children, adults, teenagers, and senior citizens are expected to use the same interface
even though their interests differ.
The primary reason that subscribers have so few options is that the design and
development of user interface code is a time-consuming and expensive process. Rather than
address the varying needs and interests of their subscriber population, online services have
attempted to create a single user interface that incorporates every feature a subscriber may
want. Some subscribers may find the resulting user interface cumbersome and difficult to use. For the online service, the creation of user interfaces with tailored feature sets may
require the design and implementation of separate applications for each target audience. The
development of new user interfaces or the addition of new features requires coding and
recompilation.
SUMMARY OF THE INVENTION Subscribers of computer information services today have a need for user interfaces
tailored to their needs and interests. The present invention overcomes the problems and
disadvantages of providing subscribers of computer information services with a single user
interface for interacting with and navigating the system. The present invention is a system
and method for developing multiple "themes" tailored to the needs and interests of a portion
of a subscriber base. The present invention facilitates the development of themes by defining
a user interface framework that introduces consistency and uniformity across the screens and
yet allows for great flexibility in appearance of the screens. The present invention defines a
convention for specifying a theme that may then be implemented as dynamically linked
libraries. The conventions of the present invention allow themes to be designed and compiled
independently of the underlying application code that facilitates communications between a
subscriber's computer and the computers of the information service. The advantages of the
present invention will be apparent from the following detailed description and accompanying
claims.
BRIEF DESCRIPTION OF THE DRAWINGS
Figures 1 A-1C are examples of screens for a standard theme and a children's theme in
accordance with a preferred embodiment of the present invention;
Figure 2 is a system organization diagram of the major components of the client
software for a preferred embodiment of the present invention;
Figure 3 is an example of a directory structure for organizing themes in accordance
with a preferred embodiment of the present invention; and
Figure 4 is a computer system block diagram illustrating use of the present invention.
PET ATT .ED DESCRIPTION OF PREFERRED EMBODIMENTS
The following description focuses on the presently preferred embodiment of the
present invention which is operative in the Microsoft® Windows® 95 environment. The
present invention, however, is not limited to any particular window-based environment. The
present invention may be embodied on a variety of different platforms including Macintosh,
X- Windows, NextStep and the like.
A theme in accordance with the present invention is based on a common user interface
model and bundles a set of functionality and information content for a specific demographic
group such as adults, kids, or teens. Alternatively, a theme may bundle a set of functionality
and information content for a group of subscribers with specific interests such as
entertainment, sports, financial information, etc. A subscriber to the information service
selects a theme when initiating a session with the service.
The user interface framework of the present invention is designed to provide a method
of navigation that allows subscribers to a computer information service to communicate their
needs quickly and efficiently so the information service may assist them in accomplishing
their goals. Using the present invention, subscribers — regardless of the selected theme — are
never more than three (3) selections, based on a topic, subtopic, and action, away from a
customized content area in which specific goals may be accomplished. Preferably, the three
selections may be made in one of several ways. With the exception of being tailored
according to subscribers' first three selections and selected theme, all customized content
areas have similar appearances and behavioral characteristics in accordance with the user
interface framework of the present invention.
All screens that comprise the various themes are based on common elements such as a
background and a set of controls. Preferably, all controls in themes designed in accordance with the user interface framework are configurable so that properties associated with the
controls may change for different themes. In general, controls are rectangular selectable
regions some of which are graphic-filled objects or simple round, rounded square, or
rectangular buttons labeled with text. In a preferred embodiment of the present invention,
configurable controls include: text boxes, static text, static images, buttons, sounds, list
boxes, and marquees. Regardless of the focus of the theme, the screens that comprise the
theme contain colorful and appealing artwork. Navigation is accomplished, preferably, using
single clicks of a mouse button. Furthermore, a single left button click or multiple left button
clicks may be used to make a selection.
Referring to Figure 1A, a Login Screen 10, 12 in accordance with a preferred embodiment of the present invention is shown. The subscriber may select a theme such as
standard 10 or a children's theme 12 when initiating a session with the online service. Also
shown in Figure 1A is a standard Home Screen 14 and a Home Screen for children 16 in
accordance with a preferred embodiment of the present invention. The standard Home screen
presents options for the tasks that adult subscribers are most likely to want to perform —
learning about new features of the service (What's New), reading email (My Mail), reading
news (My News), traversing to bookmarked locations (My Places), or traversing to the
topics/actions screen (Main Menu) to locate a customized content area. In addition,
subscribers are given options to access a filing cabinet (Storage), to access modem/user
session settings (Settings), or to exit to return to the operating system desktop (Quit).
Preferably, on all subsequent screens, subscribers are given the option of returning to this
Home Screen by selecting a "Home" button. The children's theme Home Screen 16 presents some of the same options as the adult
theme (What's New, Main Menu, My Mail) and includes some different options (My Stuff,
My Shortcuts). The children's theme 16 also uses graphics directed at children rather than
the artwork of the standard theme which is more appealing to adults.
Referring to Figure IB, a preferred embodiment of a Main Menu screen
(topics/actions screen) in accordance with a standard theme is shown 18. Subscribers may choose one of the four (4) topics as represented by the controls Entertainment, Living, Sports,
Money or one of six (6) actions as represented by the controls Chat, Reference, Messaging,
News, Internet, or Shopping. As shown in Figure IB, topic options are clearly identifiable
and are given display characteristics that distinguish them from the action options. Action
options are represented as round buttons at the bottom of the Main Menu screen while topics
are large rectangular areas. In addition, actions appear in one row while topics are organized
in a separate row. Finally, each action option is assigned a distinctive color. The visual cues
used in the screens help subscribers to quickly differentiate between topics and actions so that
they are more likely to make meaningful choices that lead them to the desired customized
content areas. In another theme, topics and actions may be present, but have very different
visual characteristics. In other words, the controls may be configured differently for a
different theme although designed to allow the subscriber to easily and quickly locate content.
The Main Menu for the children's theme 20 contains similar options (Mail, News,
Reference, Internet). However, the children's theme does not include the topics
(Entertainment, Living, Sports, Money) which are more likely to be of interest to adults and therefore included on the standard theme. Instead, the children's theme includes options that
are more likely to be of interest to children (Get Smart, Plugged In, Play On).
Figures IB and 1C show preferred embodiments of News Center screens 22, 24 and
Create Mail screens 26, 28 for a standard theme 22, 26 and a children's theme 24, 28. Each
screen includes similar options. However, the artwork on the screen is designed to appeal to
the target audience such as adults 22, 26 or children 24, 28. The standard and children
themes are merely illustrative of the types of themes that may be developed using the present
invention. The present invention provides the framework for developing themes directed
toward senior citizens, teenagers, young adults, etc. In addition, themes may be directed
toward people of all ages who share a common interest such as entertainment, sports, etc.
The themes of the present invention also allow for brand-specific customization such as a
"Planet Reebok" theme that has areas for shoes, sportswear, sporting equipment, etc.
The user interface framework based on topic/action screens consisting of rectangular
selectable areas is unique to the present invention. It is the unique user interface framework
of the present invention that allows themes tailored to the needs and interests of the
subscriber base to be developed quickly and easily without the need to modify underlying
communication application code. The consistency and uniformity in the screen definitions allows each theme (a bundle of functionality and content) to be embodied in a dynamically
linked library (DLL). The use of DLLs allows for the development of multiple themes that
may be invoked when the subscriber is ready to initiate a session with information service.
Referring to Figure 2, a system organization diagram of the major components of the
client software (i.e., subscriber communication application program) for a preferred
embodiment of the present invention is shown. The software "Hubs" 36 relate, primarily, to
the types of actions that may be performed in accordance with the user interface framework
of the present invention. Each hub consists, preferably, of two DLLs. The first DLL encapsulates functionality for the hub. The second DLL encapsulates the user interface or
theme elements (control definitions, images, sounds, etc.) The "Theme Elements"
components of the hubs are completely replaceable allowing the look and feel of the
application to change without affecting any of the underlying functionality. Using hubs,
functionality and content may be bundled and directed toward specific demographic groups or special interest groups in accordance with the themes of the present invention.
Content for each theme may be controlled in a number of ways. In a preferred
embodiment of the present invention, content is controlled via "white lists" that outline the
Internet content areas to which users of a particular theme may have access. For example, the
white list for a children's theme may exclude access to some Internet newsgroups that have
information regarding adult topics. A white list for a senior citizen's theme may exclude
content areas with information regarding parenting of young children. In an alternative
embodiment of the present invention, content may be controlled via a list of excluded areas.
The use of lists for controlling content is merely illustrative of the methods that may be used
in a preferred embodiment of the present invention. For example, content access to various
parts of the online service may be controlled via inclusion/exclusion of content pointers from various menus that comprise the theme.
In order to provide for "plug-n-play" theme DLLs, a convention is established for
specifying resource identifiers (IDs) consistently across the theme DLLs. A particular theme
DLL uses the same ID mappings, regardless of the theme focus, so that an application
program that facilitates communications with the information service may correctly use the theme DLLs interchangeably.
A theme DLL consists mainly of resources that determine the look and feel of the user
interface. The look of the theme is determined, in part, by the placement and appearance of
the controls that appear on a screen as well as background and other static images that may
appear on the screen. Each control may be comprised of several images. The currently
displayed image for the control may depend on the state of the control such as up, down,
disabled, etc. The feel of the theme is determined, in part, by the functionality associated
with the controls and other elements of the screens. Finally, each theme may be comprised of
several screens that are comprised of controls with which the subscriber interacts to communicate with the service.
In a preferred embodiment of the present invention, each theme has one common
resource DLL that contains the resources that need to be accessed by more than one hub.
Each hub also has a resource DLL that contains resources specific to that hub. A theme
object function initializes the theme's common resource DLL and creates a new object
(CDynLinkLϊbrary) that inserts the DLL name into a resource search list. The client software
loads resources by first looking in the current hub's resource DLL and then looking in the
common resource DLL for the theme. When the client software and DLLs are compiled, they
include a header file containing all the ^define statements for the resource IDs used in any
theme DLL.
Within the user interface framework of the present invention, various types of controls
are defined such as images buttons (CImageButton), static images objects (CStaticlmage),
static objects (CStatic), scroll lists (CScrollList), and marquees (CMarquee). Each control
has a corresponding configuration string specified in a theme DLL. Preferably, a control
configuration string is of the format "property l=valuel ; property 2=value2; ... ;
propertyN=valueN". To specify a control configuration string, a string table resource entry is
created with a name that describes the control. The configuration string for various instances
of a particular type of control may change for different themes thus allowing for the
development of new themes without the need for additional coding.
Associated with each control is a set of properties. The properties define the
appearance of the control and in part, the functionality of the control. Each theme may
include a different number of controls and each control appearing in a theme may have a
different values for the set of properties. For example, one property of a button is an image to
displayed when the button is in a particular state such as up, down, disabled, etc. The use of
different images for the various button states allows the look of the theme to change as the
subscriber interacts with it. Furthermore, the ability to change the property values for each
button — including the images associated with each button — allows for the creation of
multiple themes, each with a very different look.
A properties list for a preferred embodiment of a CImageButton object may be as
follows:
Property Description of Value Example Value
Cursor Number representing cursor ID in commonrc theme DLL. 1600
Enabled Y if button is enabled; N if button is disabled. Y
FaceColor If the button is not transparent, then a 3-D button face will 8421504 be drawn. This property specifies the face color for the button. The value is an unsigned long number representing the RGB value for that color.
FrameColor If the button is not transparent, then a 3-D button face will 0 be drawn. This property specifies the frame color for the button. The value is an unsigned long number representing the RGB value for that color.
HilightColor If the button is not transparent, then a 3-D button face will 16777215 be drawn. This property specifies the hiiight color for the button. The value is an unsigned long number representing the RGB value for that color.
Image File name (.bmp, .gif, jpg, or .png) of image containing exit.bmp button face images. Either this property or the ImageRes property is set for the button.
ImageRes Resource name of bitmap; specify resource name or '#' ExitBMP followed by the integer resource ID. or #258
ImageOrder The order of the button face images contained in the UP.DOWN button's overall image. Use one or more of the following image types and separate the names by commas. The names may be specified in any order, but they match the order of the button face images. The image face types are: UP - Button uπpressed DOWN - Button pressed FLYOVER - Mouse flyover DISABLED - Button is disabled
DEFAULT - Button is default pushbutton
FOCUS - Button has input focus
ON PRESSED - 2 state button in the "on" state and currently pressed
OFF PRESSED - 2 state button in the "off state and currently pressed
ImageFormat For images specified using the "Image" property, this GIF indicates the format of the image file. Valid values are "GIF", "BMP", "JPG", "PNG", or "UNKNOWN". If "UNKNOWN" is specified or no value is specified for this property, the filename extension will be used to determine the format of the file.
SheetCols If the "Sheetlndexes" property is set, then this property 4 must specify the number of columns in the image sheet from which the button face images will be extracted. If the "Sheetlndexes" property is not set, then this property value is ignored.
Sheetlndexes If the images for the button are to be extracted from an 2,0,9 image sheet, the name of the file must be specified using the "Image" property. The "Sheetlndexes" property specifies a list of (zero-based) indexes which indicate which images is extracted from the image sheet matrix.
SheetRows If the "Sheetlndexes" property is set, then this property 4 must specify the number of rows in the image sheet from which the button face images will be extracted. If the "Sheetlndexes" property is not set, then this property value is ignored.
Type If used, this value is one of the following: MUTEX
PUSH - push button
2STATE - two-state push button; when pushed it changes state
MUTEX - MUTually Exclusive two-state button which is a member of a group of mutually exclusive two-state buttons.
Each button in the group must have a sequential control ID
(e.g. 100, 101, 102, etc.). Only one button will be "on" at a time. This is similar in functionality to a typical Windows radio button.
If no type is specified, the type of the button will default to a push button.
TransparentColor If the button's bitmap contains a color representing 65280 "transparent" pixels, then this value is the unsigned long number representing the RGB value for that color.
Resize If used, this value is one of the strings shown below. If no ButtonToImage resize type is specified neither the button nor the image is resized.
ImageToButton - to stretch the image to the button's window size when displaying the button.
ButtonToImage - to size the button's window to the size of the image.
ShadowColor If the button is not transparent, then a 3-D button face will 8421504 be drawn. This property specifies the shadow color for the button. The value is an unsigned long number representing the RGB value for that color.
OnDownSound File name of a .wav file to play for the button's On Down click.wav event.
OnDownSoundRes Resource name of a .wav resource to play for the button's CLICK On Down event.
OnFlyoverSound File name of a .wav file to play for the button's On Flyover Twinkle.wav event.
OnFlyoverSoundRe Resource name of a .wav resource to play for the button's TWINKLE s On Flyover event.
OnUpSound File name of a .wav file to play for the button's On Up click.wav event.
OnUpSoundRes Resource name of a .wav resource to play for the button's CLICK On Up event.
Tooltip Text string for the button's tool tip. Exit the program.
Transparent Y if button window is transparent; N otherwise. Y
URL If used, this value represents the page name or URL x- associated with the button. When the button is clicked, the csifap://CIS:FANS URL value is checked. If it is not empty, a CSI_BN_PROCESS_URL message will be sent to the button's parent window to allow it to process the URL or page name. A message handler for this message may be of the form:
LRESULT OnProcessURL (WPARAM wParam, LPARAM lParam) where wParam contains the dialog control ID for the button who sent the notification message. IParam contains a LPCSTR pointer to the URL string to be processed.
Visible Y if button is visible; N if button is invisible. Y
Theme screens may also be comprised of static image objects (CStaticlmage).
Although the subscriber does not interact with the static image objects, the use of such objects as defined by their associated properties allows for the creation of multiple themes with very
different appearances.
A properties list for a preferred embodiment of CStaticlmage may be as follows:
Property Description of Value Example Value
Image File name (.bmp, .gif, jpg, or .png) of image to display. book.bmp Either this property or the ImageRes property must be set for the control.
ImageFormat For images specified using the "Image" property, this GIF indicates the format of the image file. Valid values are "GIF", "BMP", "JPG", "PNG", or "UNKNOWN". If "UNKNOWN" is specified or no value is specified for this property, the filename extension is used to determine the format of the file.
ImageRes Resource name of a bitmap in a resource DLL; specify BookBMP resource name or '#' followed by the integer resource ID. or Either this property or the Image property is set for the #325 button.
TransparentColor If the image contains a color representing "transparent" 65280 pixels, then value of this property is the unsigned long number representing the RGB value for that color.
Resize If used, this value is one of the strings shown below. If no WindowToImage resize type is specified neither the control nor the image is resized.
ImageTo Window - to stretch the image to the control's window size when displaying the button.
WindowToImage - to size the control's window to the size of the image.
Static objects (CStatic) may also be used in theme DLLs. The ability to change the
associated properties supports the creation of themes with different appearances. A properties
list for a preferred embodiment of a CStatic object follows:
Property Description of Value Example Value
Transparent Y if the control window is to be transparent; N if the Y control is to be painted with a background color.
BackgroundCol If the control is not transparent, then the value of this 16777215 or property is the unsigned long number representing the RGB value for the background color of the control.
TextColor The value of this property is the unsigned long 32768 number representing the RGB value for the text color.
Scroll lists (CScroliList) may also be used in themes. A properties list for a scroll list
may include:
Property Description of Value Example Value
Transparent Y if the control window is to be transparent and all non- Y selected and disabled items are to be drawn with a transparent background; N if the control and all items are to be painted with a background color.
BackgroundColor If the control is not transparent, then the value of this 16777215 property is the unsigned long number representing the RGB value for the background color of the control and all non- selected and disabled items.
TextColor The value of this property is the unsigned long number 32768 representing the RGB value for the text color of non- selected items.
HiliteBackground The value of this property is the unsigned long number 32768 Color representing the RGB value for the background color of selected items.
HiliteTextColor The value of this property is the unsigned long number 32768 representing the RGB value for the text color of non- selected items. To determine this value, use the formula encapsulated in the RGB() macro in <wingdi.h>. e.g. RGB(0,128,0) would be the value 32768.
DisabledColor The value of this property is the unsigned long number 32768 representing the RGB value for the text color of disabled items.
LinesPerltem An integer value representing the number of physical lines that each item should have.
IntegralHeight Y if the scroll list is to be resized to an even number of items; N if partial items can show in the scroll list.
MouseFlyOnlyOv Y if the flyover selection is to occur only when over the erText text of an item; N if flyover selection occurs over any portion (blank or non-blank) of an item.
Finally, themes may include marquees (CMarquee). A marquee is an object
containing scrolling text. A properties list for marquees may include:
Property Description of Value Example Value
BackgroundColor The value of this property is the unsigned long number 16777215 representing the RGB value for the background color of the control.
TextColor The value of this property is the unsigned long number 32768 representing the RGB value for the text color.
FontRes See the FontRes definition above. TNR 20 NORMAL
Direction The direction the text scrolls. Can currently be either "RighfToLert" or "BottomToTop".
Speed The number of milliseconds between scroll events so 1, 50 scrolling 1000 times per second, would be the fastest value possible. A value of 500 would scroll the text twice each second.
Delay The number of milliseconds in between scrolling items. 3000 A delay of 3000 would cause the control to wait 3 seconds before displaying the second and subsequent items.
Smoothness The number of pixels that each scroll event moves the 5 text. The higher this number the less smooth the scrolling will appear. A higher number also speeds up the text.
Cycle This value specifies the behavior of the list of text items. Once A value of "Continuous", this is default, cycles the text items infinitely. "Once" scrolls the list of items and then stops. "None" indicates that no scrolling is to occur.
Preferably, all cursors are defined as resources in the theme DLL. In addition, the
name of a backdrop image for a view may be defined using a string resource table entry. The
ability to change the backdrop image supports the creation of multiple themes with different
appearances. Because all static text is language specific, it is, preferably, stored as resource
string table entries within the theme DLL.
To facilitate the interchange of themes when initiating sessions with the information
service, each theme, preferably, has a theme name and a corresponding theme directory name.
For example, a theme named "USA Standard" might have a corresponding directory named
"USASTD." The theme directory is a directory under the user interface product's THEMES
directory. A sample directory structure is shown in Figure 3. All files are stored under the
top level directory c:\uiprod 40. Each theme also has subdirectories for animates 42 and
sounds 44 for theme files not included in a DLL.
The client software manages information about the current theme in use by the
application in the m theme member variable of a top-level application object. A Load( )
function uses the theme name passed to it to look up information in the application's entry in
the Windows Registry database. Each theme may have a section in the Registry database to
specify information about that theme. The naming convention for the registry key is
preferably, the theme name.
A load function reads in the theme registry settings and then uses a LoadLibrary( )
function to load the common resource DLL. From the DLL, it loads the default configuration
strings for the controls. To unload a theme DLL, the theme object's Unload( ) function is
called. Figure 4 is a computer system block diagram that illustrates use of the present
invention to communicate with an information service. The information service may be
viewed as a wide area network 104 — with a communication link to the Internet 110 —
consisting of node computers 106 that manage network traffic and host computers 108 with
which subscribers connect in order to take advantage of the services offered. Preferably, the present invention is embodied in an application program and DLL on a subscriber's computer
100. The application program provides the underlying user interface functionality and
manages the connection with the information service. Following selection of a theme, the
DLL for the selected theme is loaded. The subscriber's computer 100 establishes a
connection 102 to a host computer 108 through a network node computer 106 using, for
example, a modem or a cable. The network node 106 routes communications between the
subscriber's computer and the information service host computer that provides the needed functionality. Host computers assist subscribers in completing tasks such as retrieving
information and sending messages to other subscribers.
The present invention recognizes that subscribers to online services have only one
user interface option for interacting with a computer information system — the user interface developed by the service provider. Such user interfaces contain features and functionality
directed to subscribers with all levels of expertise and interest. The present invention
recognizes that subscribers of online services have varying levels of expertise and different
interests. The present invention also recognizes that all subscribers may benefit from a user
interface that is easy to use and presents consistency and uniformity across all screens. The
user interface model of the present invention defines a consistent and uniform user interface
framework well suited for all subscribers. The framework then facilitates the development of
themes that may be directed to specific demographic groups and special interest groups.
Using the present invention, an online service may be made more accessible and appealing to
a wider subscriber base.
The present invention is described in detail with specific reference to a single
preferred embodiment and certain alternatives. However, there is no intent to limit the
invention to the particular embodiment of specific alternatives. The true scope and spirit of
the present invention is defined by the following claims.