The present application relates generally to data processing systems and, in one specific example, to techniques for providing improved product suggestions for related items.
Conventional retailer websites allow shoppers to browse through a wide variety of products available for sale online. Each retailer website typically hosts multiple product listing webpages that offer various products for sale. Each retailer website generally maintains its own inventory of products.
Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
Example methods and systems for providing improved product suggestions for related items are described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of example embodiments. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details.
According to various exemplary embodiments, a system crawls retailer websites for product relations information for products in the product inventories of the retailer websites, and infers product relations for products in another product inventory based on the crawled information. For example, a product page for product P1 on a retail website of the Competitor Corporation may list other related products (e.g., “people who viewed P1 also viewed P2-P5”, “people who bought P1 also brought P6-P10”, “see accessories P11-P15 for P1”, etc., where P1-P15 are product IDs in the Competitor Corporation's namespace). Based on this, the system may infer that P1 has a relationship R1 with P2-P5, relationship R2 with P6-P10, relationship R3 with P11-P15, and so on.
This external product relations information may then be transposed to a second retail website by finding the equivalent products of the second retailer (using deterministic product matching techniques) and by inferring the appropriate relationships between the matching products of the second retailer. Thus, the system can leverage vast amounts of product relations information already existing on the web in order to improve a retailer's ability to recommend related products for a given product. At a high level, the system allows a retailer to track the affinity between various products across the web, which may improve the product search experience for the user, and may ultimately lead to higher rates of conversion.
An Application Program Interface (API) server 114 and a web server 116 are coupled to, and provide programmatic and web interfaces respectively to, one or more application servers 118. The application servers 118 host one or more applications 120. The application servers 118 are, in turn, shown to be coupled to one or more databases servers 124 that facilitate access to one or more databases 126. According to various exemplary embodiments, the applications 120 may be implemented on or executed by one or more of the modules of the system 200 illustrated in
Further, while the system 100 shown in
The web client 106 accesses the various applications 120 via the web interface supported by the web server 116. Similarly, the programmatic client 108 accesses the various services and functions provided by the applications 120 via the programmatic interface provided by the API server 114.
Turning now to
As described in more detail below, the crawling module 202 is configured to crawl a product listing webpage associated with a marketplace website, e-commerce website, and/or retailer website (e.g., Amazon®, eBay®, Google® Offers, etc.), where the product listing webpage describes a specific product included in a product inventory of the retailer website. The crawling module 202 is also configured to identify, in the crawled product listing webpage describing the specific product, product relations information describing additional products in the product inventory of the retailer website that are related to the specific product. For example, the product relations information may describe a group of additional products that tend to be purchased by users that purchased the specific product, or a group of additional products that tend to be viewed by users that viewed the specific product, or a group of additional products that tend to be purchased by users that viewed the specific product, or a group of products that are accessories for the specific product, and so on.
Thereafter, the determination module 204 (also referred to herein as a transposition module 204) is configured to transpose such product relations information to a second product inventory associated with a second retailer website (e.g., Amazon®, eBay®, Google® Offers, etc.). For example, the determination module 204 may transpose the product relations information by: identifying a second product in the second product inventory that matches the specific product from the first product inventory; identifying a second group of additional products in the second product inventory that matches the first group of additional products from the first product inventory; and inferring that the second product has a given relationship with the second group of additional products, based on the products relations information that indicates that the first product has the given relationship with the first group of additional products. The operation of the aforementioned modules of the related item suggestion system 200 will now be described in greater detail in conjunction with
Referring back to the method 300 in
Accordingly, the information included in portions 401-404 corresponds to product relations information. For example, portion 401 describes product P0 having a particular relationship “R1” with products P11-P14, where the relationship R1 may be defined as follows: if product X has a relationship R1 with product Y, then people who viewed product X tended to view the product Y. As another example, portion 402 describes product P0 having another relationship “R2” with products P21-P24, where the relationship R2 may be defined as follows: if product X has a relationship R2 with product Y, then people who purchased the product X tended to purchase the product Y. As another example, portion 403 describes product P0 having a relationship “R3” with products P31-P34, where the relationship R3 may be defined as follows: if product X has a relationship R3 with product Y, then this may mean that people who viewed product X tended to purchase product Y. As another example, portion 404 describes product P0 having a relationship “R4” with products P41-P44, where the relationship R4 may be defined as follows: if product X has a relationship R1 with product Y, then product Y is an accessory of product X.
The crawling module 202 may detect the product relations information included in product listing webpages using various techniques. In some embodiments, the crawling module 202 may crawl all the data included in the product listing webpage, and identify keywords, phrases, or language indicating that a group of one or more products have a certain relationship with the main product described in the product listing webpage. For example, the crawling module 202 may access product relations keyword information 500 illustrated in
In some embodiments, after the crawling module 202 identifies the product relations information in a product listing page, the crawling module 202 may store the product relations information in a data table or data structure, such as the exemplary data table 600 illustrated in
While the exemplary embodiments above describe various examples of relationships, it is understood that the embodiments herein are applicable to any type of relationship between products, such as products being related to each other because they are often bundled together, or because they are similar, or because they are from the same/similar manufacturer, or because they fit together or they are compatible with each other, or because they do not fit together or they are not compatible with each other, or because they are frequently mentioned together, or because they are frequently confused with each other, or because one is thought to be a replacement for the other, and so on.
According to various exemplary embodiments, the products P0 and P11-P44 may be included in a product inventory associated with the Competitor retailer website, where the product inventory may be defined or specified in a product catalog or product classification directory associated with the Competitor retailer website. For example,
Referring back to the method 300 in
The determination module 204 may identify the matching product by analyzing and extracting various attributes associated with the product P0 from the product listing webpage 400 or other online sources, and attempting to find a product in the second product inventory having attributes matching the extracted attributes. For example, in some embodiments, the determination module 204 may identify a matching product eP0 in the second product inventory by determining that the particular product P0 and the second product eP0 have the same unique product identifier (e.g., a universal product code (UPC), an international article number (IAN), an international standard book number (ISBN), a global trade item number (GTIN), etc.). In some embodiments, the determination module 204 may identify a matching product eP0 in the second product inventory by determining that the particular product P0 and the second product eP0 have a similar brand name and the same manufacturer part number (MPN). In some embodiments, the determination module 204 may identify a matching product eP0 in the second product inventory by determining that the particular product P0 and the second product eP0 have a similar product title. In some embodiments, the determination module 204 may identify a matching product eP0 in the second product inventory by determining that the particular product P0 and the second product eP0 have a similar product image, using any kind of image comparison process or image recognition process known to those skilled in the art. In some embodiments, the determination module 204 may identify a matching product eP0 in the second product inventory by determining that the particular product P0 and the second product eP0 have similar description, tags, specifications, characteristics, properties, prices, etc. Thus, the second product is identified by determining that the particular product and the second product have similar attributes, where the attributes may be extracted from product listing webpages, product catalogs, product classification directories, other online sources, and so on. Examples of techniques for matching products from different product inventories are described below in conjunction with
In operation 802 in
In operation 803 in
The determination module 204 may repeat this operation for all the product relations information included in all product listing webpages that may be crawled by the crawling module 202. Accordingly, product relations information for each product in the inventory of the Competitor retailer website may be transposed to, for example, all the corresponding products in the product inventory of the second retailer website.
According to various exemplary embodiments, after the determination module 204 transposes the product relations information to a second product inventory, the determination module 204 may use the transposed product relations information to provide a recommendation for related items to a user. For example, in some embodiments, the determination module 204 may receive (or detect) a request from a user to view a product listing webpage of a retailer website (e.g., eBay®) that is associated with a particular product (e.g., product eP0). For example, such a user request may be received when the user specifies the name of the product eP0 in a search query user interface element of the retailer website, or when the user selects the product eP0 from a list of search results, and so on. In response, the determination module 204 may display a product listing webpage for the product eP0, wherein the product listing webpage identifies the various related product items, such as product items eP11-eP14 having the relationship R1 with the product eP0, or product items eP21-eP24 having the relationship R2 with the product eP0, and so on. For example,
In some embodiments, the determination module 204 may cause product relations information to be displayed on a device such as a mobile device (e.g., smartphone or tablet computing device). For example, the determination module 204 may cause the entire product listing webpage 1000 to be displayed on a device, or the determination module 204 may cause one or more of the portions 1001-1004 of product relations information to be displayed on the device. In some embodiments, the determination module 204 may include product relations information in a notification (e.g., an e-mail or a text message) transmitted to a user of a retailer website. For example, the notification may include the product listing webpage 1000 or a reference link (e.g., uniform resource indicator (URI) or uniform resource locator (URL)) to the product listing webpage 1000. Alternatively, the notification may include one or more portions 1001-1004 of product relations information or links there to. The aforementioned notification may correspond to a “browse but did not buy” e-mail that identifies the product eP0 as an item that the user browsed or viewed but did not purchase, as well as identifying various related items based on the transposed product relations information 1001-1004. Alternatively, the aforementioned notification may identify the product eP0 as an item that the user may be interested in (based on an analysis of similar items that were viewed by the user or based on a user preference profile), and the notification may identify various related items based on the transposed product relations information 1001-1004.
While various embodiments herein refer to product relations information being included in crawled product listing webpages associated with retailer websites, it is understood that such product relations information may be obtained from other online sources that may not necessarily correspond to product listing webpages. For example, product relations information may be included in a homepage, catalog page, search results page, demonstration/tour/tutorial page, content/news/status feed, advertisements, notifications (e.g., e-mails, text messages, instant messages, etc.) and various other types of content that may or may not be associated with a retailer website. Accordingly, the crawling module 202 is configured to crawl any of these online sources in order to identify product relations information, consistent with various embodiments described herein.
Turning now to
For example, the related item suggestion system 200 may mine questions and answers between buyers and sellers on a retailer website (e.g., eBay®) in order to detect communications that describe various products (e.g., questions such as “Does A fit with B?”, “Is A compatible with B?”, “Will A work with B?”, “Is A the same as B?”, and so on). Accordingly, based on these communications, the system 200 may infer relations between products, such as “A fits with B”, “A is compatible with B”, “A is the same as B”, “A is frequently mentioned with B”, “A is often confused with B”, etc.
This information can be used by the related item suggestion system 200 to provide buyers with recommendations for similar product items (e.g., “This product is compatible/fits/works with ABC”), provide warnings to a buyer (e.g., “This product is often confused with XYZ”), guide sellers when generating item listings, provide a list of FAQs (Frequently Asked Questions) for a given product item, provide an interface to buyers to answer buyer questions directly, provide advice to a seller for answering questions from buyers, and so on.
For example,
Referring back to
Referring back to
In operation 1104 in
Accordingly, the determination module 204 may generate relationship information 1400 illustrated in
In operation 1105 (which is an optional operation in the method 1100), the determination module 204 provides the relationship information determined in operation 1104 to a user. For example, if the user transmits a request to view a product listing page associated with the particular item K, the determination module 204 may display the product listing webpage for item K and include information identifying various items that are related to item K in some way, as determined by the determination module 204 based on the method described in
The determination module 204 may also include such relationship information in a frequently asked questions (FAQ) webpage, such as a FAQ webpage associated with one or more products on a retailer website (e.g., eBay®). The determination module 204 may also provide an interface to buyers to answer buyer questions directly, such as a help page, wherein if the buyer types in a query such as “does A fit with B”, the determination module 204 may access the information 1400 in
Turning now to
In operation 1604, the determination module 204 may expand the list of candidate matching products by finding any similar or related products in the second inventory that are related to the candidate matching products identified in operation 1603. For example, if the operation 1603 identifies a single candidate matching product that is the ABC smartphone, then in operation 1604, the determination module 204 may identify all items in the second product inventory (e.g., eBay) that are related to the ABC smartphone (e.g., similar items, items that were purchased by users that purchased the ABC smartphone, items that were viewed by users that viewed the ABC smartphone, and so on). Accordingly, the determination module 204 may expand the set of candidate matching products to now include the original ABC smartphone as well as all the items on the second product inventory (e.g., eBay) that are related to the ABC smartphone.
In operation 1605, the determination module 204 applies various similarity filters to the candidates matching items and the competitor product item (e.g., image similarity filter, title similarity filter, description similarity filter, price similarity filter, category similarity filter, etc.) in order to determine the actual matching product in the second product inventory (e.g., the matching eBay product).
Each of the aforementioned filters may correspond to a component of the determination module 204 configured to perform a comparison of a particular attribute, such as image, title, description, price, category, etc. For example, the image similarity filter may be configured to compare an image associated with the product from the competitor website (e.g., the XYZ smartphone on the competitor website), and the image associated with each of the candidate matching items in the second product inventory (e.g., the ABC smartphone or related items on eBay), using any known image similarity or image comparison techniques known to those skilled in the art. For example, the image similarity filter may generate color similarity scores, texture similarity scores, etc., based on the images being compared, and compare these scores to a predetermined threshold, in order to determine how similar the images are. As another example, the description similarity filter may be configured to compare the description associated with the product from the competitor website (e.g., the XYZ smartphone on the competitor website), and the descriptions associated with each of the candidate matching items in the second product inventory (e.g., the ABC smartphone or related items on eBay), using any known description similarity techniques (e.g., natural language processing, keyword processing, etc.) known to those skilled in the art. As another example, the price similarity filter may compare the difference (e.g., delta) between the price of the product from the competitor website (e.g., the XYZ smartphone on the competitor website), and the prices of each of the candidate matching items in the second product inventory (e.g., the ABC smartphone or related items on eBay), using any known statistical analysis techniques known to those skilled in the art. Similarly, the other image filters may compare various attributes of the product from the competitor website and the candidate matching products in order to determine how similar these products are. The output of each of the filters can be given a different weighting (e.g., based on the item title, the type of the item, the product category of the particular item, and so on). In some examples the image similarity may tend to be highly dispositive, and accordingly the output of the image similarity filter may be weighted higher than, for example, the output of the description similarity filter, which in turn may be weighted higher than the output of the price similarity filter, and so on.
In operation 1606 in
The determination module 204 may repeat this operation for each product in all the available product listing webpages of the competitor website that may be crawled by the crawling module 202. Accordingly, each product in the inventory of the competitor website may be matched to a corresponding product in the product inventory of the second retailer website (e.g., eBay). Thus, a competitor's entire inventory may be matched to another product inventory using the embodiments described herein.
In some embodiments, if the related item suggestion system 200 receives a specification of a competitor's product, the system can show matching products from the second product inventory. For example, if the related item suggestion system 200 determines that the user is viewing a product on a competitor website, the related item suggestion system 200 may provide a price comparison between the competitor's product and the matching product in the second inventory (e.g., in the form of an advertisement). Similarly, if the user transmits a request to view a particular product on the second product inventory (e.g., eBay), the related item suggestion system 200 may provide a price comparison between this product and the matching product on the competitor website.
According to various exemplary embodiments, by matching a competitor's product inventory to the product inventory of a retailer website, the determination module 204 may determine if a price for an item on a retailer website (e.g., eBay.com) represents a “deal”, based on the price of the matching product on the competitor website. For example, if the eBay retailer website price for a given product is lower than a competitor price for the given product, then the eBay retailer website price for the given product may be considered a “deal”. In some embodiments, shipping costs may also be taken into account.
According to various exemplary embodiments, after the determination module 204 determines that a retailer website price for a given product item is a “deal”, the determination module 204 is configured to promote this deal in various ways. For example, the determination module 204 may expose advertisements to potential buyers indicating the eBay retailer website price for the product, the competitor's price for the product, the difference between the eBay retailer website price and the competitor's price, and so on. Such advertisements may be displayed via the web, such as on webpages associated with the retailer website (e.g., an item listing page for the given item) or on webpages associated with the competitor's website (e.g., an item listing page for the competitors item), or on any other websites, or in a mobile application. In some embodiments, the advertisements may be transmitted to users via text message, instant message, or email publications. For example, the determination module 204 may detect when users have viewed an item, saved an item, added an item to a wish list, etc., and yet the user has not purchased the item. Thereafter, a “Browse But Didn't Buy” email may be transmitted to these users, the e-mail indicating the various items that users viewed, as well as the comparative pricing information described in various embodiments. In some embodiments, advertisements may be promoted by displaying them higher (or in an otherwise more prominent position/location) in a list of search results or in a content feed of a retailer website.
In some embodiments, the determination module 204 may adjust the prices of products on a retailer website product inventory, based on the price of the matching product in the competitor inventory, in order to provide competitive pricing and deals. In some embodiments, the system 200 can provide pricing assistance to sellers. For example, when a seller tries to sell a particular product item on the retailer website, the determination module 204 may determine a price of the matching product on the competitor inventory, and suggest that the seller offer the product at a similar or lower price.
According to various exemplary embodiments, the related item suggestion system 200 can map a first category taxonomy (e.g., eBay category taxonomy) to a competitor category taxonomy. For example, by knowing how the competitor groups products in a particular product category, the related item suggestion system 200 may adjust the grouping of products in the second inventory to more closely match that of the competitor.
According to various exemplary embodiments, operation 1604 in
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied (1) on a non-transitory machine-readable medium or (2) in a transmission signal) or hardware-implemented modules. A hardware-implemented module is tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more processors may be configured by software (e.g., an application or application portion) as a hardware-implemented module that operates to perform certain operations as described herein.
In various embodiments, a hardware-implemented module may be implemented mechanically or electronically. For example, a hardware-implemented module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware-implemented module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware-implemented module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware-implemented module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily or transitorily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware-implemented modules are temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one instance in time. For example, where the hardware-implemented modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware-implemented modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware-implemented module at one instance of time and to constitute a different hardware-implemented module at a different instance of time.
Hardware-implemented modules can provide information to, and receive information from, other hardware-implemented modules. Accordingly, the described hardware-implemented modules may be regarded as being communicatively coupled. Where multiple of such hardware-implemented modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware-implemented modules. In embodiments in which multiple hardware-implemented modules are configured or instantiated at different times, communications between such hardware-implemented modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware-implemented modules have access. For example, one hardware-implemented module may perform an operation, and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware-implemented module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware-implemented modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
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 that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
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 processors or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. 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 as a server farm), while in other embodiments the processors may be distributed across a number of locations.
The one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “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).)
Example embodiments may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Example embodiments may be implemented using a computer program product, e.g., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers.
A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
In example embodiments, operations may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Method operations can also be performed by, and apparatus of example embodiments may be implemented as, special purpose logic circuitry, e.g., a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In embodiments deploying a programmable computing system, it will be appreciated that that both hardware and software architectures require consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a combination of software and a programmable processor), or a combination of permanently and temporarily configured hardware may be a design choice. Below are set out hardware (e.g., machine) and software architectures that may be deployed, in various example embodiments.
The example computer system 1800 includes a processor 1802 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 1804 and a static memory 1806, which communicate with each other via a bus 1808. The computer system 1800 may further include a video display unit 1810 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 1800 also includes an alphanumeric input device 1812 (e.g., a keyboard or a touch-sensitive display screen), a user interface (UI) navigation device 1814 (e.g., a mouse), a disk drive unit 1816, a signal generation device 1818 (e.g., a speaker) and a network interface device 1820.
The disk drive unit 1816 includes a machine-readable medium 1822 on which is stored one or more sets of instructions and data structures (e.g., software) 1824 embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 1824 may also reside, completely or at least partially, within the main memory 1804 and/or within the processor 1802 during execution thereof by the computer system 1800, the main memory 1804 and the processor 1802 also constituting machine-readable media.
While the machine-readable medium 1822 is shown 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 or data structures. 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 invention, 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., Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (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.
The instructions 1824 may further be transmitted or received over a communications network 1826 using a transmission medium. The instructions 1824 may be transmitted using the network interface device 1820 and 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., WiFi, LTE, and WiMAX 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 media to facilitate communication of such software.
Although an embodiment has been described with reference to specific example embodiments, 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.
Such embodiments of the inventive subject matter may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.