U.S. patent application number 13/599580 was filed with the patent office on 2014-03-06 for shopping list creator and optimizer.
This patent application is currently assigned to eBay Inc.. The applicant listed for this patent is Mark D. Yuan. Invention is credited to Mark D. Yuan.
Application Number | 20140067564 13/599580 |
Document ID | / |
Family ID | 50188779 |
Filed Date | 2014-03-06 |
United States Patent
Application |
20140067564 |
Kind Code |
A1 |
Yuan; Mark D. |
March 6, 2014 |
SHOPPING LIST CREATOR AND OPTIMIZER
Abstract
A mobile app creates and optimizes a shopping list of items
based on one or more predetermined objectives for a shopping trip.
The objectives include total cost, time, number of stops, preferred
stores, preferred brands, and others. The mobile app may calculate
total costs for the items from prices at one or more stores near
the shopper. The app. divides the items among multiple stores,
factoring in travel, fuel, preferences, discounts, coupons, store
loyalty cards, item availability, and the like and optimizes the
order the items are purchased from multiple stores, based on the
objective(s). Shopping may also be ordered by sequence of item
selection within stores.
Inventors: |
Yuan; Mark D.; (San Mateo,
CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Yuan; Mark D. |
San Mateo |
CA |
US |
|
|
Assignee: |
eBay Inc.
San Jose
CA
|
Family ID: |
50188779 |
Appl. No.: |
13/599580 |
Filed: |
August 30, 2012 |
Current U.S.
Class: |
705/16 ;
705/26.8 |
Current CPC
Class: |
G06Q 30/0641 20130101;
G06Q 30/0635 20130101; G06Q 30/0639 20130101; G06Q 30/0633
20130101 |
Class at
Publication: |
705/16 ;
705/26.8 |
International
Class: |
G06Q 30/00 20120101
G06Q030/00; G06Q 20/20 20120101 G06Q020/20 |
Claims
1. A method of optimizing an electronic shopping list comprising:
receiving, by a computer processor, the electronic shopping list;
receiving at least one predetermined objective from the group
consisting of a shopping history, mode of transportation, user
demographic data, and vehicle carrying capacity; optimizing the
shopping list based on the at least one predetermined objective;
and providing the optimized shopping list.
2. The method of claim 1 wherein the shopping history includes a
preference from the group of (preferences consisting of a store
preference, a brand preference, and an item type preference.
3. The method of claim 1 wherein the at least one objective further
includes an objective from the group consisting of price, miles
traveled, fuel costs, route of travel, and number of stops.
4. The method of claim 3 wherein the at least one objective is the
route of travel and optimizing the shopping list includes providing
an indication of traffic along the route of travel.
5. The method of claim 1 wherein at least one shopping objective
further includes allowing entry of a preorder for an item for
pickup at a business establishment at a desired time, and executing
the shopping list within a time that allows picking up the
preordered item at approximately the desired time.
6. The method of claim 2 wherein an item on the shopping list does
not include a type designation and optimization includes detecting
the item without a type designation and adding the item type
designation based on the item type preference.
7. The method of claim 1 further comprising detecting use of the
optimized shopping list, the use including selecting items and
checking the selected items of the optimized shopping list using at
least one of the group consisting of gestures, taking a photo of
selected items, and scanning a bar code of the selected items.
8. The method of claim 7 wherein the identity of the selected items
is transmitted to an information system for generating a point of
sale receipt concurrently with the selection of the items.
9. The method of claim 7 further including checking out the items
at a point of sale, and obtaining an electronic copy of a point of
sale receipt for the checked out items for updating a preference
list.
10. The method of claim 7 further including obtaining an electronic
copy of redeemed coupons for at least some of the selected items
for updating a preference list.
11. The method of claim 7 further including determining whether a
selected item has the same brand as the brand for the item on a
preference list and, responsive to a determination that the item
purchased has a different brand than the brand for the item on the
preference list, using the determination for updating the
preference list.
12. A method of creating a shopping list comprising: scanning, by a
computer processor executing a mobile app, at least one of the
group consisting of emails, text messages, voice mails, and
photographs; detecting members of the scanned at least one of the
group which include shopping list content; and adding the detected
members to a shopping list.
13. (canceled)
14. A machine-readable storage device having embedded therein a set
of instructions which, when executed by a machine, causes execution
of the following operations: receiving the electronic shopping
list; receiving at least one predetermined objective from the group
consisting of a shopping history, mode of transportation, user
demographic data, and vehicle carrying capacity; optimizing the
shopping list based on the at least one predetermined objective;
and providing the optimized shopping list.
15. The machine-readable storage device of claim 14 wherein the
shopping history includes a preference from the group of
preferences consisting of a store preference, a brand preference,
and an item type preference.
16. The machine-readable storage device of claim 14 wherein the at
least one objective further includes an objective from the group
consisting of price, miles traveled, fuel costs, route of travel,
and number of stops.
17. The machine-readable storage device of claim 14 wherein the at
least one objective is the route of travel and optimizing the
shopping list includes providing an indication of traffic along the
route of travel.
18. The machine-readable storage device of claim 14 wherein at
least one shopping objective further includes allowing entry of a
preorder for an item for pickup at a business establishment at a
desired time, and executing the shopping list within a time that
allows picking up the preordered item at approximately the desired
time.
19. The machine-readable storage device of claim 15 wherein the
preference is an item type preference and optimization includes
detecting an item without a type designation and adding the item
type designation based on the item type preference.
20. The machine-readable storage device of claim 14 further
comprising detecting use of the optimized shopping list, the use
including selecting items and checking the selected items off the
optimized shopping list using at least one of the group consisting
of gestures, taking a photo of selected items, and scanning a bar
code of the selected items.
21. The machine-readable storage device of claim 20 wherein the
identity of the selected items is transmitted to an information
system for generating a point of sale receipt concurrently with the
selection of the items.
22. The machine-readable storage device of claim 20 further
including checking out the items at a point of sale, and obtaining
an electronic copy of a point of sale receipt for updating a
preference list.
23. The machine-readable storage device of claim 20 further
including obtaining an electronic copy of redeemed coupons for at
least some of the selected items for updating a preference
list.
24. The machine-readable storage device of claim 20 further
including determining whether a selected item has the same brand as
the brand for the item on a preference list and, responsive to a
determination that the item purchased has a different brand than
the brand for the item on the preference list, using the
determination for updating the preference list.
25. A machine-readable storage device having embedded therein a set
of instructions which, when executed by a machine, causes execution
of the following operations: scanning, by a computer processor
executing a mobile app, at least one of the group consisting of
emails, text messages, voice mails, and photographs; detecting
members of the scanned at least one of the group which include
shopping list content; and adding the detected members to a
shopping list.
26. (canceled)
27. A system for optimizing an electronic shopping list comprising:
at least one computer processor and computer storage configured to
receive the electronic shopping list; receive at least one
predetermined objective from the group consisting of a shopping
history, a mode of transportation, user demographic data, and
vehicle carrying capacity; optimize the shopping list based on the
at least one predetermined objective; and provide the optimized
shopping list.
28. A system for creating a shopping list comprising: at least one
computer processor computer processor and computer storage
configured to use a mobile app to scan at least one of the group
consisting of emails, text messages, voice mails, and photographs;
detect members of the scanned at least one of the group which
include a designation as including shopping list content; and add
the detected members to a shopping list.
29. A machine-readable storage device having embedded therein a set
of instructions which, when executed by a machine, causes execution
of the following operations: scanning, by a processor executing a
mobile device, at least one of the group consisting of emails, text
messages, voice mails, and photographs; detecting members of the
scanned at least one of the group which include a designation as
including shopping list content; adding the detected members to a
shopping list; receiving at least one predetermined objective;
optimizing the shopping list based on the at least one
predetermined objective; and providing the optimized shopping
list.
30. The machine-readable storage device of claim 29 wherein the
objective includes shopping history that includes a preference from
the group of preferences consisting of a store preference, a brand
preference, and an item type preference.
31. The machine-readable storage device of claim 29 wherein the at
least one objective further includes an objective from the group
consisting of price, miles traveled, fuel costs, route of travel,
and number of stops.
32. The machine-readable storage device of claim 29 wherein the at
least one objective is the route of travel and optimizing the
shopping list includes providing an indication of traffic along the
route of travel.
33. The machine-readable storage device of claim 29 wherein at
least one shopping objective further includes allowing entry of a
preorder for an item for pickup at a business establishment at a
desired time, and executing the shopping list within a time that
allows picking up the preordered item at approximately the desired
time.
34. The machine-readable of claim 29 wherein an item on the
shopping list does not include a type designation and optimization
includes detecting the item without a type designation and adding
the item type designation based on the item type preference.
Description
TECHNICAL FIELD
[0001] The present disclosure generally relates to data processing
techniques. More specifically, the present disclosure describes a
technique for creating and optimizing a shopping list so that the
items on the shopping list are purchased based on predetermined
objectives.
BACKGROUND
[0002] The Internet and the World Wide Web have given rise to a
wide variety of on-line retailers that operate virtual stores from
which consumers can purchase products (i.e., merchandise, or goods)
as well as services. Although the popularity of these on-line
retail sites is clearly evidenced by their increasing sales, for a
variety of reasons, some consumers may still prefer to purchase
items in a more conventional manner--i.e., via a brick-and-mortar
store. Even when purchasing items from a brick-and-mortar store,
various web-based applications and tools may be used to optimize
the order in which such items may be purchased.
DESCRIPTION OF THE DRAWINGS
[0003] Some embodiments are illustrated by way of example and not
limitation in the figures of the accompanying drawings:
[0004] FIG. 1 is a block diagram depicting a system for optimizing
shopping lists, where the items on the shopping list may be
arranged in accordance with the distance and/or travel time between
a shopper's location and the location of the items, the shopping
list optimized based on a predetermined objective according to an
example embodiment;
[0005] FIG. 2 is a block diagram illustrating an environment for
operating a mobile device, according to an example embodiment;
[0006] FIG. 3 is a block diagram illustrating a mobile device,
according to an example embodiment;
[0007] FIG. 4 is a block diagram illustrating a network-based
system for use in optimizing shopping lists based on a
predetermined objective, according to an example embodiment;
[0008] FIG. 5 is a flowchart illustrating a method for creating a
shopping list, according to an example embodiment;
[0009] FIG. 6 is a flowchart illustrating a method for optimizing a
shopping list, according to an example embodiment;
[0010] FIG. 7 is a flowchart illustrating a method for checking
selected items off a shopping list and updating shopping
objectives, according to an example embodiment;
[0011] FIG. 8 is an example shopper interface diagram showing a
shopper interface that may be used in shopping list optimization,
according to an example embodiment;
[0012] FIG. 9 is a diagrammatic representation of a machine in the
example form of a computer system within which a set of
instructions for causing the machine to perform any one or more of
the methodologies discussed herein may be executed.
DETAILED DESCRIPTION
[0013] The present disclosure describes data processing techniques
for creating and optimizing a shopping list to order the obtaining
of products and/or services (hereinafter "items") that are being
offered via brick-and-mortar and/or online retail stores, and then
present the optimized results in such a manner that conveys to the
viewer in a simple and intuitive manner the distance and/or travel
time between a location of the shopper, and one or more
brick-and-mortar stores at which the items may be obtained, the
optimization being based on a predetermined objective. In the
following description, for purposes of explanation, numerous
specific details are set forth in order to provide a thorough
understanding of the various aspects of different embodiments. It
will be evident, however, to one skilled in the art, that the
present embodiments may be practiced without all of the specific
details.
Creating the Shopping List
[0014] Embodiments are not limited to mobile devices but could be
implemented partly on a mobile device and partly on a laptop or
other stationary computing device. The shopping list creator and
optimizer may recognize a list of shopping items on a mobile
device, either within a mobile app provided by a publication system
such as eBay, Inc,.RTM. or in a separate app. The list may be
imported into the eBay app if found within an external application.
In one embodiment, the list may be created by a shopper using an
input mechanism (e.g., keyboard, camera, voice input) and then
imported into the app. In some embodiments the shopping list to be
optimized may be created by the shopper at home, or at some other
location, using a computer. The optimized shopping list may be
returned to the computer for use when the shopper embarks on the
shopping trip. However, in many embodiments, the list is created
on, or imported to, the mobile device, either manually by the
shopper or automatically as more fully described below, and
returned to the mobile device in optimized format. Alternatively,
the optimized list may be returned to both the home computer and
the mobile device for use as the shopper desires.
[0015] In another embodiment, the list may be created by the
shopper using any of a variety of applications, including a cell
phone note pad application. In another embodiment, the user may
execute a search (on a search engine, website, or within (or
associated with) the mobile app, etc.) and select items for
inclusion on the list such as, for example, by searching the
shopper's email, text messages, voice mail, photos, and other
suitable content and create the list from the content. As one
example, the shopper's wife may text the shopper, "don't forget the
milk, also buy bread." The mobile app can be actuated and set to
scan for a predetermined time period, a predetermined number of
messages, or messages from a particular person, among other things,
each of which may be set by the shopper, to determine relevant
emails, texts (such as the above text message), voice mail, photos,
instant chat messages, videos, and the like that are appropriately
designated as including shopping list content. Recognition can be
by appropriate reading technology for email and text, voice
recognition for voice mails, and visual recognition for photos. The
results of the scan may be sent to the publication system for use
in conjunction with optimizing the list and detecting purchased
items.
[0016] In some embodiments, a scanning layer or engine may be
implemented, for example, just above the OS layer of the mobile
device, and might be constantly or intermittently active for
scanning the above emails, texts, chats, voice mails, photos, and
the like for more efficiency for the shopper. For example, the
scanning layer may execute in the background of the device and may
activate itself upon detecting that a message is received by an
account (e.g., email account, chat account, cellular account)
associated with the mobile device. In either case, the layer or the
app will extract out data such as the item names, quantities,
brands, type, (e.g., organic) from the received message and add the
extracted data to a shopping list. In some embodiments, the
extracted data may include metadata accompanying the extracted
data. Once a list is populated with one or more items extracted
from a message, the scanning layer may return to a passive
listening mode (to conserve device battery life, among other
reasons) to await detection of another incoming message. In some
embodiments, the scanning layer may be selectively enabled or
disabled by the user to permit the user to exercise control over
the privacy of the data contained on or received by the device. For
ease of description, the app and the layer will be referred to
collectively herein by the term "app" although one of ordinary
skill in the art will readily recognize that either term could be
used.
Optimizing the Shopping List
[0017] Accordingly, the optimized shopping list may be provided to
the shopper on the mobile phone, optionally with maps and
directions. In some embodiments, the shopper location may be
obtained automatically using a location system (e.g., GPS,
triangulation, shopper input of location, wi-fi detection). Or the
shopper may simply select a location on a map (using a pointing
device, such as a mouse, or a finger or stylus with a touch screen
display) to indicate a location at which the shopper will be at
some future time and from which the distance or travel time to
another locations such as stores for obtaining the items should be
derived. With some embodiments, the shopper may define a circular
region by simply dragging his or her finger or stylus (or taking a
similar action with a pointing device) to specify a diameter, or
radius, of a circle making up a circular region (see example
illustrated in FIG. 8) from which search results should be
presented. In other embodiments, the shopper may simply draw any
closed shape to specify the region to be searched for local
results. In yet other embodiments, the shopper may trace or
highlight a specific road or set of roads that comprise a route
that the shopper frequently travels.
[0018] In another embodiment a shopper that is using public transit
may specify the number of the vehicle or transit route and the time
of departure and the system, interacting with publically available
route maps, may obtain the route of transit to be used to identify
stores associated at which the items on the shopping list may be
purchased, such that those stores closest in distance or travel
time to any point along the route can be presented.
[0019] In other embodiments the app may take into account shopping
objectives such as miles, minimum number of stops, bus or transit
schedule, and routes. In one embodiment, if the shopper is
traveling by public transit the stores searched may by definition
be limited to those on or near the route of the particular public
transit vehicle, and the app may also compute, using available
historical data, how much an individual can carry by weight and
bulk. In this regard, demographic data such the shopper's age
and/or other physically identifying data (e.g., height, weight,
gender) may be entered into the app to be factored in for
optimizing, on the theory that older people may carry less than
younger people. In other embodiments, a shopping objective may be
meeting the shopper's preference history, such as the shopper's
store preferences, shopper's brand preferences, and the shopper's
item type preferences may be entered into the app and the shopping
list optimized based on one or more of the objectives. For example,
if the shopper's preference list indicates preference for Whole
Foods.RTM. for groceries, Target.RTM. or Wal-Mart.RTM. for dry
goods, and Home Depot.RTM. for building materials, the search may
be limited to those stores. Of course, the above special price
prompts may also be included.
[0020] With some embodiments, the optimized shopping list may be
shown as a simple list, with each individual item entry including
any one or more of: a price at which an item is being offered; a
store name (virtual online, or physical, e.g., local brick and
mortar); a brief description of the items being offered; a physical
distance from a shopper's location to the store at which the items
is being offered; a link to share the listing with someone; a link
to a map showing directions from the shopper's current location, or
some shopper-specified location, to the store; a travel time
indicating how long (in time) it would take the shopper to travel
via a particular mode, to the location of the store at which the
product is being offered; and a quantity of a product being offered
at the store. With some embodiments, search results for online
virtual stores may be shown separate from the search results for
locally available items, while in some embodiments, the search
results are intermingled, and/or arranged according to some other
specific aspect or attribute, such as price. With some embodiments,
a shopper may filter the search results to only view items located
at stores within a threshold distance; located at stores within a
threshold travel time (where the mode of travel can be specified),
that have prices that are less than, or exceed, some threshold
price, and so forth.
[0021] The shopper may actuate the app to begin optimizing the
shopping list. Alternatively any of a plurality of automatic
actuations may be employed. For example, if the mobile device GPS
system detects that the device is moving more than a predetermined
distance, the system may assume the shopper is traveling to do the
shopping indicated by the shopping list, and this may trigger the
app or, in some embodiments, the scanning layer, to begin the
scanning discussed above and assembling a list and begin the
shopping optimization. The system would then run a search against
retailers, taking into account factors such as loyalty cards,
coupons, discounts offered by stores, and purchase history of the
shopper, which narrows the list in order to optimize the shopping
trip. Based on the foregoing, cost lookups and inventory data for
each item on the list can be performed at nearby (or favorite)
stores (using Milo.RTM., or a similar service, for example). The
optimizer may generate one or more lists with total costs or may
divide the list among different nearby stores in an attempt to find
the optimal set of stores from which to purchase the items. Such
objectives may include price (factoring in on-sale items, the
above-mentioned loyalty cards, coupons, discounts), the purchase
preferences or history of the shopper), travel time, most efficient
use of time, number of stops, transportation options, fuel costs,
sufficiency of inventory for each individual item, the preferred
brands or types in the shopper's preference list or history, or
other predetermined objectives, which may be set by the shopper.
Dividing purchase of the items among stores may be based on
insufficient quantity at a single store, and may also be based on
the above objectives. For example, one store may have the better
price (factoring in on-sale items, the above-mentioned loyalty
cards, coupons, discounts and the purchase history of the shopper)
for some of the items and another store may have the better price
for other items on the shopping list. As another example, one store
may have the preferred brand for some of the items, and another
store may have the preferred brand for other of the items.
[0022] Consistent with some embodiments, a web-based search engine
cooperates with the mobile app to optimize a shopping list and
return to a client computing device, either mobile, stationary, or
to both a mobile device and to a stationary device, the shopping
list organized based on predetermined objectives, as discussed
above. In alternate embodiments, a shopper may enter one or more
selections into the shopper's mobile device indicating the
shopper's objectives. In one embodiment the shopper may select
time, which would cause the system to generate a list with the
shortest travel time. In another embodiment the shopper may select
lowest cost. In another embodiment, the shopper could select brands
and stores, in which case the optimization would be limited to the
shopper's preferred store based on the shopper's preference list or
purchase history (obtained as discussed below), and brands
specified or, if not specified on the list, the preferred brands in
the shopper's preference list or history. In another embodiment, a
list may be generated based on one or more of the above selections,
such as shortest travel time and preferred stores. In some
instances a specific brand (brand X) of item is selected by the
shopper, or entered from the shopper's preference list, and the
system may search for brand X. The system may also search for
alternate brands and find such a good price for the same item in
brand Y, that the system may prompt the shopper as to whether brand
Y at the given price might preferred. Likewise, the foregoing good
price may be found online instead of at a bricks and mortar store
and the shopper may be prompted as to whether to purchase the item
online if the price can be obtained. The price trigger point for
such prompts may be predetermined either by the system, or by the
shopper, for example by entering percentage discounts that would
cause the shopper to be prompted to determine whether the shopper
prefers to depart from a stated preference.
[0023] The mobile device may also allow entry of preorder,
reservation, or hold options to allow for the shopper to preorder
an item such as take-out food or hold an item or quantity of item,
and then execute the shopping list with time of the trip, including
likely time at each store, factored into time of the trip, and the
distances involved, including the distance from the final store to
the restaurant to pick up the take-out order at the desired
time.
[0024] With some embodiments, the shopper may toggle the
presentation of the optimized list between distance and time, such
that the search results can be ordered based on distance (e.g., the
geodesic distance, or distance as the crow flies) or, the more
practical and useful measure--the time required to travel between
the location of the shopper and the location of the store offering
the items presented in a search result. With some embodiments
discussed above, the shopper can specify a mode of transportation
(e.g., walking, biking, automobile, public transportation, etc.)
and the travel time to obtain the items on the shopping list will
be derived based on the routes available when travelling via the
selected mode. With some embodiments, various filtering criteria
may be applied. For example, the shopper may request that the
shopping list be optimized with respect to one or more stores that
are within a predefined travel time, or distance. Similarly, a
shopper may indicate a preference for shopping only at specific
stores (e.g., Apple.RTM. Store, Best Buy.RTM., Wal-Mart.RTM., and
so forth) to obtain the shopping list organized by items being
offered only by those stores.
[0025] With some embodiments, the shopping list may be organized by
the shopper interacting with a map. In particular, with some
embodiments, the shopper may interact with a map to specify anyone
or more of: the starting location to be used for deriving the
distance or travel time to the items associated with the individual
search results; a specific geographical region of interest, from
which to display search results; a corridor or commuting
route--from which any point along the corridor can be used as the
starting point to derive the distance to a store associated with a
search result. The map may be presented as part of a web-based map
application, a desktop computer application, or an application that
is specific to a particular mobile computing platform (e.g., such
as Apple's iOS, or Google's Android operating systems.)
[0026] Optimal lists may be presented to the shopper along with
directions and/or a map to direct the shopper to the different
stores. The optimization could also include accessing a shopper's
purchase history or preferences, discussed above, via one or more
retailers, online e-commerce providers (e.g., eBay), data recorded
in the app, all coupons, discounts, in-store specials, and the like
to aid in compiling the costs for the list of items. For example,
if the list includes a generic term like "ground beef", the list
could be augmented and the costs could be made more accurate by
recognizing from the shopper's purchase history the shopper prefers
to purchase organic ground beef as the type preference. Also,
optimized in-store directions could provide a specifically ordered
shopping list to direct a shopper to the items within the store.
The directions could specify an ordered path within a store for
picking up items on the list. For example, the directions could
tell a shopper to pick up items 2 and 4 from aisle 1, and then
swing over to aisle 2 to pick up item 1, then aisle 3 for item 3,
etc.
Shopping
[0027] As used herein, "shopping" may be viewed as executing the
shopping list. The shopper obtains the list optimized by the system
and enters into a bricks and mortar store. As the shopper picks up
the various shopping items they may be checked off the list, either
by shopper selection of a selectable icon or other indicator (e.g.,
image, text, button) on the mobile device or, in more efficient
manner for the shopper, by gesture, by taking a photo, by scanning
the item bar code, or other suitable action. The shopper may take a
photograph of the items by the mobile device as the items are
entered into the shopping cart or, in some instances, by taking a
photograph of all items in the cart. As mentioned above, the items
may be checked off the list by device gesture. A non-exhaustive
list of device gestures may be seen in the Appendix. As items are
checked off the list they may be transmitted wirelessly to the
store's system which may then use the data to prepare a Point of
Sale (POS) check-out list such that time waiting in line to check
out and pay for the goods will be minimized. Gestures, which may
entail turning on the device camera for gesture recognition, may
not be capable of identifying the item picked up by the user.
However, gestures could be function to identify the item picked up
if the list were specifically ordered (e.g., #1 milk, #2 soap, #3
apples) as discussed above, and then when the user picks up the
first item, he performs the gesture and the system interprets the
gesture to mean that the user picked up milk. This would depend on
the user following the list and picking up the items in the
specified order. In general it might be easier to just perform a
device gesture. For example, the device gesture could leverage an
accelerometer of the device so that if the shopper "waves" the
device over the item or shake the device or move the device some
other way, the device (which is ordinarily not moving) records or
detects a movement of the device and maps that movement to the
recognized gesture of picking up an item.
[0028] Gestures are more of an intuitive way of crossing items off
the list so that when the shopper looks at the list, he or she
doesn't have to recount each item in the shopping basket and
manually cross it off. Gestures may not be sufficient to determine
specific brand or type of item purchased. To know what specific
type of apple was purchased, the shopper may scan the barcode or
enter the product code into the app or obtain a copy of the receipt
of items purchased and map "apples" to "Fuji Apples, 2.3 lbs.,
$5.50" on the receipt.
[0029] In one embodiment, the system may also prompt the shopper
after an item is checked off the list in order to update the
shopper's preference list over time. For example, the system may
tap into PayPal or a similar service to determine a list of the
shopper's past preferences and determine that the shopper prefers
Fuji apples to Granny Smith apples. For example, if during shopping
the shopper checked off apples, the system may prompt, "Did you buy
Fuji apples?" The reply may be used in continually updating of the
shopper's preferences (purchase history). If the shopper over time
begins buying Granny Smith more often than Fuji, the preference
list will change the shopper's preference in apples to Granny
Smith.
[0030] In another embodiment, purchase history (preference) list
update may be accomplished automatically by entering the data on
the POS check-out list if that data is available to the app and
using the data to update preferences. The App may be designed to
update the shopper's preferences at or after checkout, when the
items are actually purchased. For example, the app could receive a
receipt or detailed list of items purchased and could use that
receipt/list to update user preferences with items actually
purchased. This could be accomplished via a payment provider or
point-of-sale provider hooking into the mobile app and providing a
digital copy of the receipt. Or the receipt could be obtained from
the retailer (via API call), especially if the retailer already
lets the user link the retailer loyalty card into the app. For
example, if the store or the payment provider has a system that is
"open" it may allow the app to have access to the transaction data.
In another embodiment, the credit card processor for the shopper's
credit card may allow the shopper to have access to the transaction
data. Alternatively, the user may take a photo of the paper receipt
from the POS and scan/OCR the receipt and import it into the app to
determine items purchased.
[0031] If the store won't expose transaction data, then coupons
that are redeemed will be exposed since if a Campbell soup coupon
is redeemed it shows that the shopper bought Campbell soup. For
example, a mobile app may expose coupons to the shopper and allow
the shopper to link/load coupons to the shopper's loyalty card
account. When the shopper checks out at the retailer and signs in
at the POS with the shopper's loyalty card (swipe, enter phone #)
and buys the item having the associated coupon, the POS knows to
apply the coupon to the purchase of the item. The mobile app will
know the coupon is redeemed based on post-transaction processing
(it knows the shopper bought the item and that the coupon was
used), so if the shopper can get coupon redemption data from the
retailer or from the coupon provider (e.g., the manufacturer, the
distributor, the coupon company), that could be another way to
determine what specific item is purchased by a user.
Example System
[0032] FIG. 1 is a block diagram depicting a system 100 for
delivering search results, according to an example embodiment. The
system 100 can include a shopper 110, a network-based publication
system 120 with a search engine, and one or more merchants 130 (and
merchant systems). In an example, the shopper 110 can connect to
the network-based publication system 120 via a client computing
device 115 (e.g., desktop, laptop, smart phone, PDA, or similar
electronic device capable of some form of data connectivity). The
network-based publication system 120 will receive and process a
query from the shopper's client computing device. Generally,
location information specifying the physical or geographical
location of the shopper will be received with the query. For
example, if the device is a mobile device, a GPS unit may inform
the device of its location, such that the location information of
the device can be shared with the network-based publication system
120. Other known techniques for deriving location information may
be used with both mobile and non-mobile client computing devices,
for example, such as desktop computers, etc. For instance, with
some embodiments, the location information indicating the location
of the shopper may be explicitly specified by the shopper, for
example, by the shopper interacting with a map.
[0033] In an example, the merchant 130 can operate computer
systems, such as an inventory system 132 or a POS system 134. The
network-based publication system 120 can interact with any of the
systems used by merchant 130 for operation of the merchant's retail
or service business. In an example, the network-based publication
system 120 can work with both POS system 134 and inventory system
132 to obtain access to inventory available at individual retail
locations run by the merchant. This inventory information can be
used in both generating items listings, and selecting and ordering
search results served by the network-based publication system
120.
Example Operating Environment
[0034] With some embodiments, the shopper may explicitly indicate
or specify his current location for use in deriving a distance or
travel time to stores offering products/services. However, with
some embodiments, location information of the shopper may be
derived with a mobile computing device of the shopper. FIG. 2 is a
block diagram illustrating an environment 200 for operating a
mobile device 115, according to an example embodiment. The
environment 200 is an example environment within which methods of
serving search results can be operated. The environment 200 can
include a mobile device 115, a communication connection 210, a
network 220, servers 230, a communication satellite 270, a merchant
server 280, and a database 290. The servers 230 can optionally
include location based service application 240, location
determination application 250, and publication application 260 with
search engine 261. The database 290 can optionally include merchant
databases 292, shopper profile database 294, and/or location
history database 296. The mobile device 115 represents one example
device that can be utilized by a shopper to receive offers and
share context information associated with the shopper. The mobile
device 115 may be any of a variety of types of devices (for
example, a cellular telephone, a PDA, a Personal Navigation Device
(PND), a handheld computer, a tablet computer, a notebook computer,
or other type of movable device). The mobile device 115 may
interface via a connection 210 with a communication network 220.
Depending on the form of the mobile device 115, any of a variety of
types of connections 210 and communication networks 220 may be
used.
[0035] For example, the connection 210 may be Code Division
Multiple Access (CDMA) connection, a Global System for Mobile
communications (GSM) connection, or other type of cellular
connection. Such connection 210 may implement any of a variety of
types of data transfer technology, such as Single Carrier Radio
Transmission Technology (1xRTT), Evolution-Data Optimized (EVDO)
technology, General Packet Radio Service (GPRS) technology,
Enhanced Data rates for GSM Evolution (EDGE) technology, or other
data transfer technology (e.g., fourth generation wireless, 4G
networks). When such technology is employed, the communication
network 220 may include a cellular network that has a plurality of
cell sites of overlapping geographic coverage, interconnected by
cellular telephone exchanges. These cellular telephone exchanges
may be coupled to a network backbone (for example, the public
switched telephone networks (PSTN), a packet-switched data network,
or other types of networks).
[0036] In another example, the connection 210 may be Wireless
Fidelity (Wi-Fi, IEEE 802.11x type) connection, a Worldwide
Interoperability for Microwave Access (WiMAX) connection, or
another type of wireless data connection. In such an embodiment,
the communication network 220 may include one or more wireless
access points coupled to a local area network (LAN), a wide area
network (WAN), the Internet, or other packet-switched data
network.
[0037] In yet another example, the connection 210 may be a wired
connection, for example an Ethernet link, and the communication
network may be a LAN, a WAN, the Internet, or other packet-switched
data network. Accordingly, a variety of different configurations
are expressly contemplated.
[0038] A plurality of servers 230 may be coupled via interfaces to
the communication network 220, for example, via wired or wireless
interfaces. These servers 230 may be configured to provide various
types of services to the mobile device 115. For example, one or
more servers 230 may execute location based service (LBS)
applications 240, which interoperate with software executing on the
mobile device 115, to provide LBSs to a shopper. LBSs can use
knowledge of the device's location, and/or the location of other
devices and/or retail stores, etc., to provide location-specific
information, recommendations, notifications, interactive
capabilities, and/or other functionality to a shopper. With some
embodiments, the LBS operates in conjunction with the publication
application 260 and search engine 261, in particular, do provide
search results that are arranged based on the distance or travel
time between a mobile device 115 (or other computer device) and a
retail store. For example, an LBS application 240 can provide
location data to a network-based publication system 120, which can
then be used to arrange a set of search results, based on distance
and/or travel time between two locations. Knowledge of the mobile
device's location, and/or the location of other devices, may be
obtained through interoperation of the mobile device 115 with a
location determination application 250 executing on one or more of
the servers 230. Location information may also be provided by the
mobile device 115, without use of a location determination
application, such as application 250. In certain examples, the
mobile device 115 may have some limited location determination
capabilities that are augmented by the location determination
application 250.
Example Mobile Device
[0039] FIG. 3 is a block diagram illustrating the mobile device
115, according to an example embodiment. The mobile device 115 may
include a processor 310. The processor 310 may be any of a variety
of different types of commercially available processors suitable
for mobile devices (for example, an XScale architecture
microprocessor, a Microprocessor without Interlocked Pipeline
Stages (MIPS) architecture processor, or another type of
processor). A memory 320, such as a Random Access Memory (RAM), a
Flash memory, or other type of memory, is typically accessible to
the processor. The memory 320 may be adapted to store an operating
system (OS) 340, as well as application programs 350, such as the
above-discussed mobile app, and a location enabled application that
may provide LBSs to a shopper. The scanning device discussed above
is seen at 330. The processor 310 may be coupled, either directly
or via appropriate intermediary hardware, to a display 350 and to
one or more input/output (I/O) devices 360, such as a keypad, a
touch panel sensor, a microphone, and the like. Similarly, in some
embodiments, the processor 310 may be coupled to a transceiver 370
that interfaces with an antenna 390. The transceiver 370 may be
configured to both transmit and receive cellular network signals,
wireless data signals, or other types of signals via the antenna
390, depending on the nature of the mobile device 115. In this
manner, the connection 210 with the communication network 220 may
be established. Further, in some configurations, a GPS receiver 380
may also make use of the antenna 390 to receive GPS signals.
[0040] Additional detail regarding providing and receiving
location-based services can be found in U.S. Pat. No. 7,848,765,
titled "Location-Based Services," granted to Phillips et al. and
assigned to Where, Inc. of Boston, Mass., which is hereby
incorporated by reference.
[0041] An example geo-location concept discussed within U.S. Pat.
No. 7,848,765 is a geofence. A geofence can be defined as a
perimeter or boundary around a physical location or mobile object
(e.g., a shopper). A geofence can be as simple as a radius around a
physical location defining a circular region around the location.
However, a geofence can be any geometric shape or an arbitrary
boundary drawn on a map. A geofence can be used to determine a
geographical area of interest for the calculation of demographics,
advertising, presenting search results, or similar purposes.
Geofences can be used in conjunction with identifying and
presenting search results, as described herein. For example, a
geofence can be used to assist in determining whether a shopper (or
mobile device associated with the shopper) is within a geographic
area of a particular merchant. If the shopper is within a geofence
established by the merchant or the publication system, the systems
discussed herein can use that information to identify and present
search results (e.g., via a mobile device associated with the
shopper).
Example Platform Architecture
[0042] FIG. 4 is a block diagram illustrating a network-based
system 400 for processing a search query, and presenting search
results, as described more fully herein. The block diagram depicts
a network-based system 400 (in the exemplary form of a
client-server system), within which an example embodiment can be
deployed. A networked system 402 is shown, in the example form of a
network-based location-aware publication, advertisement, or
marketplace system, that provides server-side functionality, via a
network 404 (e.g., the Internet or WAN) to one or more client
machines 410, 412. FIG. 4 illustrates, for example, a web client
406 (e.g., a browser, such as the Internet Explorer browser
developed by Microsoft Corporation of Redmond, Wash. State) and a
programmatic client 408 executing on respective client machines 410
and 412. In an example, the client machines 410 and 412 can be in
the form of a mobile device, such as mobile device 115.
[0043] An Application Programming Interface (API) server 414 and a
web server 416 are coupled to, and provide programmatic and web
interfaces respectively to, one or more application servers 418.
The application servers 418 host one or more publication modules
420 (in certain examples, these can also include search engine
modules, commerce modules, advertising modules, and marketplace
modules, to name a few), payment modules 422, and dynamic offer
modules 432. The application servers 418 are, in turn, shown to be
coupled to one or more database servers 424 that facilitate access
to one or more databases 426. In some examples, the application
server 418 can access the databases 426 directly without the need
for a database server 424.
[0044] The publication modules 420 may provide a number of
publication and search functions and services to shoppers that
access the networked system 402. The payment modules 422 may
likewise provide a number of payment services and functions to
shoppers. The payment modules 422 may allow shoppers to accumulate
value (e.g., in a commercial currency, such as the U.S. dollar, or
a proprietary currency, such as "points") in accounts, and then
later to redeem the accumulated value for products (e.g., goods or
services) that are advertised or made available via the various
publication modules 420, within retail locations, or within
external online retail venues. The payment modules 422 may also be
configured to present or facilitate a redemption of offers,
generated by the location-aware offer modules 432, to a shopper
during checkout (or prior to checkout, while the shopper is still
actively shopping). The offer modules 432 may provide dynamic
context sensitive offers (e.g., coupons or immediate discount deals
on targeted items) to shoppers of the networked system 402. The
offer modules 432 can be configured to use all of the various
communication mechanisms provided by the networked system 402 to
present offer options to shoppers. The offer options can be
personalized based on current location, time of day, shopper
profile data, past purchase history, or recent physical or online
behaviors recorded by the network-based system 400, among other
things (e.g., context information). While the publication modules
420, payment modules 422, and offer modules 432 are shown in FIG. 4
to all form part of the networked system 402, it will be
appreciated that, in alternative embodiments, the payment modules
422 may form part of a payment service that is separate and
distinct from the networked system 402. Additionally, in some
examples, the offer modules 432 may be part of the payment service
or may form an offer generation service separate and distinct from
the networked system 402.
[0045] Further, while the system 400 shown in FIG. 4 employs a
client-server architecture, the present embodiment is of course not
limited to such an architecture, and could equally well find
application in a distributed, or peer-to-peer, architecture system,
for example. The various publication modules 420, payment modules
422, and offer modules 432 could also be implemented as standalone
systems or software programs, which do not necessarily have
networking capabilities.
[0046] The web client 406 accesses the various publication modules
420, payment modules 422, and offer modules 432 via the web
interface supported by the web server 416. Similarly, the
programmatic client 408 accesses the various services and functions
provided by the publication modules 420, payment modules 422, and
offer modules 432 via the programmatic interface provided by the
API server 414. The programmatic client 408 may, for example, be a
smartphone application that enables shoppers to communicate search
queries to the system while leveraging shopper profile data and
current location information provided by the smartphone or accessed
over the network 404.
[0047] FIG. 4 also illustrates a third party application 428,
executing on a third party server machine 440, as having
programmatic access to the networked system 402 via the
programmatic interface provided by the API server 414. For example,
the third party application 428 may, utilizing information
retrieved from the networked system 402, support one or more
features or functions on a website hosted by the third party. The
third party website may, for example, provide one or more
promotional, marketplace or payment functions that are supported by
the relevant applications of the networked system 402.
Additionally, the third party website may provide merchants with
access to the offer modules 432 for configuration purposes. In
certain examples, merchants can use programmatic interfaces
provided by the API server 414 to develop and implement rules-based
pricing schemes that can be implemented via the publication modules
420, payment modules 422, and offer modules 432.
Example Methods
[0048] FIG. 5 is a flowchart illustrating a method 500 for creating
a shopping list according to an embodiment. The method starts at
510 and at 520 the mobile app, or the scanning layer, searches at
the shopper's electronic communications, such as email and text,
voice communications such as voice mails, and/or visual
communications processing a search query, according to an example
embodiment. As discussed above, the mobile app or the scanning
layer can be actuated and set to scan for a predetermined time
period, a predetermined number of messages, or messages from a
particular person, each of which may be set by the shopper, to
determine relevant emails, texts (such as the above text message),
voice mail, photos, instant chat messages, videos, and the like
that are appropriately designated as including shopping list
content. A decision is taken at 530 to determine whether a
particular entry, such as an email, text, photo, voice mail or is
appropriately marked as a shopping item. If Yes, the item is
imported, or entered, into the shopping list at 540. A decision is
taken at 550 to determine whether the scanning has reached the end
of the entries marked as shopping items. If the decision is No,
then the shopper's communication entries are scanned again at 520
and the method continues. When the end of the marked entries is
reached at 550, the decision takes the Yes leg and the shopping
list is transmitted for optimization. One of ordinary skill in the
art will readily understand that the shopping list may be
temporarily stored for later transmission for optimization.
[0049] FIG. 6 is a flowchart illustrating a method 600 for
optimizing a shopping list, according to an example embodiment. At
610 the shopper enters the optimization objective, such as time,
price, or an entry from the shopper's purchase history, or other
objectives. As discussed above, the objective may be efficient use
of time, which would cause the system to generate a list with the
shortest travel time. In another embodiment the shopper may select
lowest cost as the objective. In another embodiment, the shopper
could select brands and stores, in which case the optimization
would be limited to the shopper's preferred store based on the
shopper's preference list and brands specified or, if not specified
on the list, the preferred brands in the shopper's preference list
or history. Other objectives include number of stops in the
shopping route, or transportation options. In another embodiment,
the optimized list may be generated based more than one of the
above objectives, such as shortest travel time and preferred
stores. The objectives may include demographic data such as
shopper's age and/or other physically identifying data (e.g.,
height, weight, gender), mode of transportation, and similar
objectives. From the foregoing data the optimization can take into
account how much weight and space the mode of transportation can
carry. Other examples can be given from the above discussion of
shopping objectives. At 6230 the mobile app, perhaps in conjunction
with server 230 that optionally includes location based service
application 240, location determination application 250, and
publication application 260 with search engine 261, searches
merchant databases to locate items based on the objectives. At 630
the same or a similar search may be made, but based on alternate
objectives such as alternate brands. The shopping list is optimized
by arranging the shopping items associated with the locations found
at 620 in accordance with the above parameters and objectives. A
decision is taken at 640 to determine whether a better deal, or
buy, has been found using the alternate options as seen at 630. If
No, the method ends at 670. If the Yes decision is taken, a
decision is then taken at 660 to determine whether the shopper
wishes to accept the better deal even though it is based on an
alternate objective. If Yes, the optimized shopping list at 640 is
updated with the store of the better deal. If No, the method
ends.
[0050] With the shopping list organized, the shopper may complete
the shopping trip. FIG. 7 is a flowchart illustrating a method 700
for checking selected items off a shopping list and updating
shopping objectives, according to an example embodiment. At 710 the
shopper receives the optimized shopping list at 710, and at 720
enters the brick and mortar store to purchase the items optimized
for purchase at the store based on the objective of the shopping
trip. At 730 the shopper selects the items off the shelf. At 740
the shopper checks selected items off the list. This may be
accomplished by gesture, by taking a photo, by scanning the item
bar code, or other suitable action. The shopper may take a
photograph of the items by way of the mobile device as the items
are entered into the shopping cart or, in some instances, by taking
a photograph of all items in the cart. As items are checked off the
list, the system may, as discussed above, prompt the shopper to
determine whether the shopper selected type or brand of item on the
shopper's preference list, in order to update the shopper's
preference list over time. As items are checked off the list they
may, in some embodiments, be transmitted wirelessly to the store's
system at 750 which may then use the data to prepare a Point of
Sale (POS) check-out list such that time waiting in line to check
out and pay for the goods will be minimized. In other embodiments,
the shopper proceeds to check out and the shopper's preferences are
updated at 760. As discussed above, the mobile app may be designed
to update the shopper's preferences at or after checkout, when the
items are actually purchased. For example, the app could receive a
receipt or detailed list of items purchased and could use that
receipt/list to update user preferences with items actually
purchased.
[0051] At 770 a decision may be taken to determine whether there is
more than one store on the optimized list. If Yes, the method
repeats beginning at step 720. If No, the method ends at 780.
Example Shopper Interfaces
[0052] FIG. 8 illustrates an example shopper interface of an
application for a mobile device including an interactive map on
which search results can be shown, according to some embodiments.
As illustrated in FIG. 8, the shopper can indicate a geographical
region of interest. In this example the shopper has simply placed
his finger in a first location on the map and then dragged his
finger to generate a circle, which will serve as the geographical
area of interest for purposes of filtering and presenting the
search results. Assuming the shopper selects as the center of the
circle is current location, the shopper will be presented with a
quick visual presentation of the locations and names of stores
where items on the shopping list are being offered in accordance
with the above objectives.
[0053] The various operations of example methods described herein
may be performed, at least partially, by one or more processors
that are temporarily configured (e.g., by software) or permanently
configured to perform the relevant operations. Whether temporarily
or permanently configured, such processors may constitute
processor-implemented modules or objects that operate to perform
one or more operations or functions. The modules and objects
referred to herein may, in some example embodiments, comprise
processor-implemented modules and/or objects.
[0054] Similarly, the methods described herein may be at least
partially processor-implemented. For example, at least some of the
operations of a method may be performed by one or more processors
or processor-implemented modules. The performance of certain
operations may be distributed among the one or more processors, not
only residing within a single machine or computer, but deployed
across a number of machines or computers. In some example
embodiments, the processor or processors may be located in a single
location (e.g., within a home environment, an office environment or
at a server farm), while in other embodiments the processors may be
distributed across a number of locations.
[0055] The one or more processors may also operate to support
performance of the relevant operations in a "cloud computing"
environment or within the context of "software as a service"
(SaaS). For example, at least some of the operations may be
performed by a group of computers (as examples of machines
including processors), these operations being accessible via a
network (e.g., the Internet) and via one or more appropriate
interfaces (e.g., Application Program Interfaces (APIs)).
[0056] FIG. 9 is a block diagram of a machine in the form of a
computer system within which a set of instructions, for causing the
machine to perform any one or more of the methodologies discussed
herein, may be executed. In alternative embodiments, the machine
operates as a standalone device or may be connected (e.g.,
networked) to other machines. In a networked deployment, the
machine may operate in the capacity of a server or a client machine
in a client-server network environment, or as a peer machine in
peer-to-peer (or distributed) network environment. In a preferred
embodiment, the machine will be a server computer, however, in
alternative embodiments, the machine may be a personal computer
(PC), a tablet PC, a set-top box (STB), a Personal Digital
Assistant (PDA), a mobile telephone, a web appliance, a network
router, switch or bridge, or any machine capable of executing
instructions (sequential or otherwise) that specify actions to be
taken by that machine. Further, while only a single machine is
illustrated, the term "machine" shall also be taken to include any
collection of machines that individually or jointly execute a set
(or multiple sets) of instructions to perform any one or more of
the methodologies discussed herein.
[0057] The example computer system 900 includes a processor 902
(e.g., a central processing unit (CPU), a graphics processing unit
(GPU) or both), a main memory 901 and a static memory 906, which
communicate with each other via a bus 908. The computer system 900
may further include a display unit 910, an alphanumeric input
device 917 (e.g., a keyboard), and a shopper interface (UI)
navigation device 911 (e.g., a mouse). In one embodiment, the
display, input device and cursor control device are a touch screen
display. The computer system 900 may additionally include a
machine-readable storage device 916 (e.g., drive unit), a signal
generation device 918 (e.g., a speaker), a network interface device
920, and one or more sensors 921, such as a global positioning
system sensor, compass, accelerometer, or other sensor.
[0058] The drive unit 916 includes a machine-readable medium 922 on
which is stored one or more sets of instructions and data
structures (e.g., software 923) embodying or utilized by any one or
more of the methodologies or functions described herein. The
software 923 may also reside, completely or at least partially,
within the main memory 901 and/or within the processor 902 during
execution thereof by the computer system 900, the main memory 901
and the processor 902 also constituting machine-readable media.
[0059] While the machine-readable medium 922 is illustrated in an
example embodiment to be a single medium, the term
"machine-readable medium" may include a single medium or multiple
media (e.g., a centralized or distributed database, and/or
associated caches and servers) that store the one or more
instructions. The term "machine-readable medium" shall also be
taken to include any tangible medium that is capable of storing,
encoding or carrying instructions for execution by the machine and
that cause the machine to perform any one or more of the
methodologies of the present embodiment, or that is capable of
storing, encoding or carrying data structures utilized by or
associated with such instructions. The term "machine-readable
medium" shall accordingly be taken to include, but not be limited
to, solid-state memories, and optical and magnetic media. Specific
examples of machine-readable media include non-volatile memory,
including by way of example semiconductor memory devices, e.g.,
EPROM, EEPROM, and flash memory devices; magnetic disks such as
internal hard disks and removable disks; magneto-optical disks; and
CD-ROM and DVD-ROM disks.
[0060] The software 923 may further be transmitted or received over
a communications network 926 using a transmission medium via the
network interface device 920 utilizing any one of a number of
well-known transfer protocols (e.g., HTTP). Examples of
communication networks include a local area network ("LAN"), a wide
area network ("WAN"), the Internet, mobile telephone networks,
Plain Old Telephone (POTS) networks, and wireless data networks
(e.g., Wi-Fi.RTM. and WiMax.RTM. networks). The term "transmission
medium" shall be taken to include any intangible medium that is
capable of storing, encoding or carrying instructions for execution
by the machine, and includes digital or analog communications
signals or other intangible medium to facilitate communication of
such software.
[0061] Although specific example embodiments have been described
herein, it will be evident that various modifications and changes
may be made to these embodiments without departing from the broader
spirit and scope of the invention. Accordingly, the specification
and drawings are to be regarded in an illustrative rather than a
restrictive sense. The accompanying drawings that form a part
hereof, show by way of illustration, and not of limitation,
specific embodiments in which the subject matter may be practiced.
The embodiments illustrated are described in sufficient detail to
enable those skilled in the art to practice the teachings disclosed
herein. Other embodiments may be utilized and derived therefrom,
such that structural and logical substitutions and changes may be
made without departing from the scope of this disclosure. This
Detailed Description, therefore, is not to be taken in a limiting
sense, and the scope of various embodiments is defined only by the
appended claims, along with the full range of equivalents to which
such claims are entitled.
* * * * *