Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DYNAMIC WATERFALL CHARTS
Document Type and Number:
WIPO Patent Application WO/2018/217544
Kind Code:
A1
Abstract:
A graphical chart indicating values for different types of shares of a business enterprise are described. A server can provide data representing price per share and enterprise values for a graphical chart. A selected enterprise value for the business enterprise can be received and values of different types of shares at that selected enterprise value can be determined. Data indicating the values of the different shares can then be provided for display upon the graphical chart.

Inventors:
BROGGER GREG (US)
Application Number:
PCT/US2018/033258
Publication Date:
November 29, 2018
Filing Date:
May 17, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SHARESPOST INC (US)
International Classes:
G06Q10/06
Foreign References:
US20020178105A12002-11-28
Other References:
None
Attorney, Agent or Firm:
SHEKHER, Parag et al. (US)
Download PDF:
Claims:
CLAIMS

I/We claim: 1 . A method for generating a waterfall graphical chart indicating values of different types of shares of a business enterprise based on a selected enterprise value of that business enterprise, comprising:

generating, by a processor, the waterfall graphical chart having an x-axis indicating a range of enterprise values and a y-axis indicating a price per share, the waterfall graphical chart representing the price per share based on the range of enterprise values for different types of shares of the business enterprise, the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares;

determining, by the processor, a position along the x~axis representing the range of enterprise values of an enterprise value indicator that is configured to move along the x-axis to allow a user to select the selected enterprise value;

determining, by the processor, the enterprise value corresponding to the x- axis at the position of the enterprise value indicator;

determining, by the processor, values of the different types of shares based on the selected enterprise value; and

generating, by the processor, a graphical overlay upon the waterfall chart, the graphical overlay indicating the selected enterprise value and the values of the different types of shares based on the selected enterprise value. 2. A method, comprising:

providing, by a processor, data associated with a graphical chart representing a price per share based on a range of enterprise values for different types of shares of a business enterprise;

determining, by the processor, a selected enterprise value for the business enterprise based on a position of an enterprise value indicator on the graphical chart; determining, by the processor, values of the different types of shares based on the selected enterprise value; and

providing, by the processor, data representing the values of the different types of shares for display upon the graphical chart.

3. The method of claim 2, wherein the graphical chart includes an x-axis indicating the range of enterprise values and a y-axis indicating the price per share. 4. The method of claim 3, wherein determining the selected enterprise value includes:

determining, by the processor, a position along the x-axis representing the range of enterprise values of the enterprise value indicator. 5. The method of claim 4, wherein the position represents the selected enterprise value.

6, The method of claim 2, wherein the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares.

7. The method of claim 2, wherein the data representing the values of the different types of shares are for display upon an overlay upon the graphical chart. 8. The method of claim 2, wherein the range of enterprise values is based on information associated with recorded venture capital transactions.

9. A computer program product, comprising one or more non-transitory computer-readable media having computer program instructions stored therein, the computer program instructions being configured such that, when executed by one or more computing devices, the computer program instructions cause the one or more computing devices to:

provide data associated with a graphical chart representing a price per share based on a range of enterprise values for different types of shares of a business enterprise;

determine a selected enterprise value for the business enterprise based on a position of an enterprise value indicator on the graphical chart;

determine values of the different types of shares based on the selected enterprise value; and provide data representing the vaiues of the different types of shares for display upon the graphical chart.

10. The computer program product of claim 9, wherein the graphical chart includes an x~axis indicating the range of enterprise vaiues and a y~axis indicating the price per share.

1 1 . The computer program product of claim 10, wherein determining the selected enterprise value includes:

determine a position along the x-axis representing the range of enterprise vaiues of the enterprise value indicator,

12. The computer program product of claim 1 1 , wherein the position represents the selected enterprise value.

13. The computer program product of claim 9, wherein the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares. 14, The computer program product of claim 9, wherein the data representing the vaiues of the different types of shares are for display upon an overlay upon the graphical chart.

15. The computer program product of claim 9, wherein the range of enterprise vaiues is based on information associated with recorded venture capital transactions.

16. A system, comprising:

a database storing information associated with recorded venture capital transactions; and

a processor circuit configured to provide data associated with a graphical chart representing a price per share based on a range of enterprise values for different types of shares of a business enterprise that is a subject of the recorded venture capital transactions, determine a selected enterprise value for the business enterprise based on a position of an enterprise value indicator on the graphical chart, determine values of the different types of shares based on the selected enterprise value, and provide data representing the values of the different types of shares for display upon the graphical chart.

17. The system of claim 16, wherein the graphical chart includes an x~axis indicating the range of enterprise values and a y-axis indicating the price per share.

18. The system of claim 17, wherein determining the selected enterprise value includes:

determine a position along the x-axis representing the range of enterprise values of the enterprise value indicator,

19. The system of claim 18, wherein the position represents the selected enterprise value.

20. The system of claim 16, wherein the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares.

21 . The system of claim 16, wherein the data representing the values of the different types of shares are for display upon an overlay upon the graphical chart.

Description:
DYNAMIC WATERFALL CHARTS

CLAIM FOR PRIORITY

[0001] This application claims priority to U.S. Provisional Patent Application No. 62/509,398, filed on May 22, 2017. The content of the above-identified application is incorporated herein by reference in its entirety.

[0002] This application claims priority to U.S. Patent Application No. 15/804,852, filed on November 6, 2017. The content of the above-identified application is incorporated herein by reference in its entirety.

TECHNICAL ELD [0003] This disclosure relates to data processing, and in particular generating a dynamic chart for calculating and displaying enterprise values.

BACKGROUND

[0004] The enterprise value of a business enterprise is based on different classes of stock. The enterprise value of the business enterprise is therefore based on the total amount of stock issued among the different classes issued at various times. For example, successive series rounds of venture capital funding can result in the sale of preferred stock. Thus, a series A round might result in a class of preferred stock sold to investors in exchange for their investment. The subsequent series B round might also result also in preferred stock, but sold at a different price than the series A round. Common stock can also be issued. However, estimating the prices of all of the different types of stock at different enterprise values for the business enterprise can be difficult.

SUMMARY

[0005] Some of the subject matter described herein includes a method for generating a waterfall graphical chart indicating values of different types of shares of a business enterprise based on a selected enterprise value of that business enterprise, comprising: generating, by a processor, the waterfall graphical chart having an x-axis indicating a range of enterprise values and a y-axis indicating a price per share, the waterfall graphical chart representing the price per share based on the range of enterprise values for different types of shares of the business enterprise, the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares; determining, by the processor, a position along the x-axis representing the range of enterprise values of an enterprise value indicator that is configured to move along the x~axis to allow a user to select the selected enterprise value; determining, by the processor, the enterprise value corresponding to the x-axis at the position of the enterprise value indicator; determining, by the processor, values of the different types of shares based on the selected enterprise value; and generating, by the processor, a graphical overlay upon the waterfall chart, the graphical overlay indicating the selected enterprise value and the values of the different types of shares based on the selected enterprise value.

[0006] Some of the subject matter described herein also includes a method, comprising: providing, by a processor, data associated with a graphical chart representing a price per share based on a range of enterprise values for different types of shares of a business enterprise; determining, by the processor, a selected enterprise value for the business enterprise based on a position of an enterprise value indicator on the graphical chart; determining, by the processor, values of the different types of shares based on the selected enterprise value; and providing, by the processor, data representing the values of the different types of shares for display upon the graphical chart.

[0007] In some implementations, the graphical chart includes an x-axis indicating the range of enterprise values and a y-axis indicating the price per share.

[0008] In some implementations, determining the selected enterprise value includes: determining, by the processor, a position along the x-axis representing the range of enterprise values of the enterprise value indicator.

[0009] In some implementations, the position represents the selected enterprise value.

[0010] In some implementations, the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares. [0011] In some implementations, the data representing the values of the different types of shares are for display upon an overlay upon the graphical chart.

[0012] In some implementations, the range of enterprise values is based on information associated with recorded venture capital transactions, [0013] Some of the subject matter described herein also includes a computer program product, comprising one or more non-transitory computer-readable media having computer program instructions stored therein, the computer program instructions being configured such that, when executed by one or more computing devices, the computer program instructions cause the one or more computing devices to: provide data associated with a graphical chart representing a price per share based on a range of enterprise values for different types of shares of a business enterprise; determine a selected enterprise value for the business enterprise based on a position of an enterprise value indicator on the graphical chart; determine values of the different types of shares based on the selected enterprise value; and provide data representing the values of the different types of shares for display upon the graphical chart.

[0014] In some implementations, the graphical chart includes an x-axis indicating the range of enterprise values and a y-axis indicating the price per share.

[0015] In some implementations, determining the selected enterprise value includes: determine a position along the x-axis representing the range of enterprise values of the enterprise value indicator.

[0016] In some implementations, the position represents the selected enterprise value.

[0017] In some implementations, the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares.

[0018] In some implementations, the data representing the values of the different types of shares are for display upon an overlay upon the graphical chart.

[0019] In some implementations, the range of enterprise values is based on information associated with recorded venture capital transactions.

[0020] Some of the subject matter described herein also includes a system, comprising: a database storing information associated with recorded venture capital transactions; and a processor circuit configured to provide data associated with a graphical chart representing a price per share based on a range of enterprise values for different types of shares of a business enterprise that is a subject of the recorded venture capital transactions, determine a selected enterprise value for the business enterprise based on a position of an enterprise value indicator on the graphical chart, determine values of the different types of shares based on the selected enterprise value, and provide data representing the values of the different types of shares for display upon the graphical chart.

[0021] In some implementations, the graphical chart includes an x-axis indicating the range of enterprise values and a y-axis indicating the price per share. [0022] In some implementations, determining the selected enterprise value includes: determine a position along the x-axis representing the range of enterprise values of the enterprise value indicator.

[0023] In some implementations, the position represents the selected enterprise value. [0024] In some implementations, the different types of shares including one or both of shares issued during a series round of venture capital financing or common shares.

[0025] In some implementations, the data representing the values of the different types of shares are for display upon an overlay upon the graphical chart. BRIEF DESCRIPTION OF THE DRAWINGS

[0026] FIG. 1 illustrates an example of a dynamic waterfall chart,

[0027] FIG. 2 illustrates an example of providing an overlay indicating pricing information for stock. [0028] F!G. 3 illustrates an example of funding histories.

[0029] FIG. 4 illustrates an example of a block diagram for providing a dynamic waterfall chart.

[0030] FIG. 5 illustrates an example of providing a pricing for stock at different enterprise values of an initial public offering (IPO). [0031] FIG. 6 illustrates an example of a customized valuation estimation.

[0032] FIG. 7 illustrates an example of a device for providing a dynamic waterfall chart.

[0033] FIG. 8 illustrates an example of an interface for fund investment.

[0034] FIG. 9 illustrates an example of a block diagram for automation a fund investment.

DETAILED DESCRIPTION

[003S] This disclosure describes device and techniques for providing a dynamic waterfall chart. In one example, a dynamic waterfall chart can be generated and displayed to provide a user with a single chart that can indicate the values of the types of shares (e.g., preferred stock issued within different series rounds, common stock, etc.) issued for a business enterprise based on different enterprise values. The values for the shares can be provided via an overlay displayed on the dynamic waterfall chart. Thus, at a given enterprise value, the estimated price of ail of the price of all of the types of shares can be determined and quickly provided to the user in an easy-fo-understand manner.

[0036] In more detail, F!G. 1 illustrates an example of a dynamic waterfall chart.

In FIG. 1 , chart 105 is a dynamic waterfall chart for a business enterprise. Chart 105 includes an x-axis indicating an enterprise value for the business enterprise and a y- axis indicating a price per share of the business enterprise for shares 1 10 indicating that the business enterprise has issued shares in a seed series, series A-G, and common shares. The different shadings representing different portions of chart 105 can indicate an estimated value per share for a type of share for a selected enterprise value. That is, the overall selected enterprise value can be composed of estimated values for the different types of shares. For example, portion 1 15 can indicate the estimated value for a preferred stock issued in a series G round of venture financing. Portion 120 can indicate the estimated value for a preferred stock issued in a series F round of venture financing. As a result, the values for the different types of shares can be depicted at the same time to provide a user with significant detail regarding the enterprise value of the business enterprise. [0037] FIG. 2 illustrates an example of providing an overlay indicating pricing information for stock. In FIG. 2, overlay 205 can be provided to indicate the various values of the different types of shares for a given enterprise value in more detail. For example, if chart 105 is displayed on a vebpage via a web browser on a user's computer (i.e., the chart 105 is generated by a web server), then as the user selects different enterprise values (e.g., by moving a mouse cursor, selecting and moving an indicator 210 displayed on chart 105 via a touchscreen, etc.) then overlay 205 can be generated and displayed. Overlay 205 can provide the values of a single share of each type of share based on the selected enterprise value. For example, in FIG. 2, indicator 210 is placed at an enterprise value of $28.38 billion. Thus, the web server generating chart 105 can determine that the user wants to know an estimate for the different values of the types of shares issued for the business enterprise if it is valued at $26.38 billion. This can be determined and the results can be displayed via overlay 205, providing the user with a breakdown detailing ail of the values. For example, in FIG. 2, overlay 205 indicates that the series G shares are valued at $48.77 and that the series F shares are valued at $39.64. Thus, the user can be provided dynamically generated information regarding the values of the different types of shares for different enterprise values. This can provide the user with more insight regarding how much they should pay for those shares in an quick and easy- to-understand manner. [0038] The user can also select to see the value of a single or a smaller group of types of shares. For example, referring back to FIG. 1 , the individual types of shares indicated in shares 1 10 can be selected or de-selected to select to have information regarding certain types of shares to be displayed via chart 105. For example, if the user is only interested in viewing the values of series G and F shares, then these can be selected with the checkboxes next to the corresponding labels of shares 1 10. This results in chart 105 only displaying information related to series G and F shares, [0039] The values of the shares and other related information of chart 105 (e.g., the types of shares, etc.) can come from the funding history of the business enterprise. FIG. 3 illustrates an example of funding histories. In FIG. 3, funding history 305 can indicate the date, amount, type of share (e.g., seed, series A, series, B, etc.), valuation, and the investors who purchased the shares. Summary cap table 310 can provide, for each type of share, the number of authorized shares, the original issued price, any liquidation multiples, and the percent owned for each type of share. The data from funding history 305 and summary cap fable 310 can be used to generate chart 105 in FIGS. 1 and 2 and generate the information for overlay 205. For example, if it is determined that the user wants to know what the value of series G shares are for the business enterprise at an enterprise value of $26.38 billion, then the data from funding history 305 and summary cap table 310 can be analyzed by the server and the value for the series G shares can be determined accordingly. If the user next wants to know the value for the series G shares at a $45 billion enterprise value, then the user can quickly manipulate chart 105 (e.g., by moving indicator 210 and placing it at $45 billion on the x-axis) and overlay 205 can be updated to provide the new information based on a $45 billion enterprise value and the data from funding history 305 and summary cap table 310.

[0040] F!G. 4 illustrates an example of a block diagram for providing a dynamic waterfall chart. In FIG. 4, a waterfall chart can be generated (405). For example, a user can use a web browser to browse to a website, open up a mobile phone application, etc. to manipulate a waterfall chart. A server can determine this and then generate or provide data for a dynamic waterfall chart such as chart 105, and provide the corresponding data back to the user's computing device for it to be displayed on a display screen of the user's computing device. [0041] The user can manipulate the chart to select an enterprise value and, therefore, the server can determine the selected enterprise value (410), For example, in FIG. 2, the user can move indicator 210 left or right along the x~axis to indicate that he or she wishes to receive some insight regarding the values of the different types of shares based on a given enterprise value as represented by the x- axis. In FIG. 2, the user can place indicator 210 at $26.38 billion along the x-axis to indicate that he or she wishes to see the values of the shares if the business enterprise is valued at $26.38 billion. Thus, the server can determine the placement of the indicator along the x~axis, determine an enterprise value based on that position, and then determine the values of the shares based on that enterprise value, as discussed herein.

[0042] The values of the different types of shares based on the selected enterprise value and share information can be determined (415), For example, if indicator 210 in FIG. 2 is at the x~axis position indicating $26.38 billion, then the values for the different types of shares can be determined, for example, by accessing the information regarding the types of shares represented by funding history 305 and summary cap table 310 in FIG. 3. For example, the information depicted in FIG. 3 might have been uploaded onto the server previously (e.g., into a database) and that information can be analyzed to determine the values of the types of shares. The values can be different based on the position of indicator 210, for example, because different positions of indicator 210 represent different enterprise values for the business enterprise being studied. Funding history 305 and summary cap table 310 can also be caused to be displayed on the same or different webpage than chart 105 so that the user can also see the information that it provides, for example, they might want to know the key investors in each of the different rounds of venture financing.

[0043] When the values of the share types is determined, an overlay can be caused to be generated by the server such that it is displayed for the user (420). For example, overlay 205 in FIG. 2 can be provided indicating the enterprise value representing the position of indicator 210 upon the x-axis and the values of the different types of shares. In some implementations, the values can be displayed in descending order from highest value to lowest value, or vice versa.

[0044] Many of the prior examples provide values of shares based on a merger & acquisition (M&A) activity at the enterprise value. However, the values based on an initial public offering (IPO) can also be provided. FIG. 5 illustrates an example of providing a pricing for stock at different enterprise values of an initial public offering

(IPO). In FIG. 5, chart 505 can be generated and provided to represent the values of shares if an IPO occurs and the preferred shares were converted to common stock (e.g., the preferred shares of a series B round a depicted in FIG. 5 converted to common shares). Thus, for different enterprise values as dictated by the IPO, the values of the different types of shares can also be provided. [0045] In some implementations, a user can toggle between chart 105 and 505 as depicted in FIGS. 1 and 5, respectively. For example, the user can initially see the values of the different types of shares in an &A outcome, but then select a drop-down box and select an IPO option. The server can then update the chart to be displayed and provide chart 505. The user can then switch back to chart 105 by manipulating the drop-down box.

[0046] Sometimes, a user might want to value an asset based on the activity of only some investors. For example, a user might consider one investor providing venture financing to be too aggressive and, therefore, overly value shares. Another investor might be more in line with the user's own thinking regarding a possible enterprise value. FIG. 6 illustrates an example of a customized valuation estimation. In FIG. 6, the various investments into the business enterprise are provided and the user can select the checkboxes to determine and display an enterprise value 615 based on the selected transactions.

[0047] For example, the user might want to generate an enterprise value for a business enterprise. However, the user might want a more customized enterprise value than merely considering all of the data available. For example, in FIG. 6, last primary round 805 can indicate the most recent round of financing for the business enterprise. Prior rounds 610 can indicate other publicly reported investments including the fund, date, source document (e.g., a document uploaded to the server indicating the details), type of share (e.g., series E), value, and implied enterprise value based on that round. The user might not consider some of the implied enterprise values to be accurate. Thus, by selecting the checkboxes, and not selecting the checkboxes for the transactions in which the user considers the implied enterprise values to be inaccurate, the user can request that a customized enterprise value 615 be generated based on the check-boxed transactions.

[0048] In some implementations, users can input the different holdings that they own. For example, if the user purchased series C shares for company A at $X, and purchased series C shares for company B at $Y, then they can input these onto the website. To provide the customer with an understanding of what their portfolio with these holdings might be worth, the information/data discussed herein can also be used to determine the value of the customer's portfolio. As more rounds or investments are made, then the value of the users portfolio can updated accordingly. Thus, the system can track investments and update the value of the user's portfolio.

[0049] In some implementations, pre-defined non-traded equity sales can be managed. For example, in public markets, rule 10b5-1 plans allow for people with possession with material information to trade shares. In some implementations, a similar system can be set up in the private markets. Thus, a user can set up a plan, for example, on January 1 indicating that on March 30, if the shares can be sold for at least $X but less than $Y then a Z amount of shares should be sold. This information can be provided via a graphical user interface (GUI) to facilitate trades in the private markets.

[0050] Additionally, because information regarding various investments is stored, the activity of specific venture capitalists can also be tracked. For example, a user can identify what venture capitalists have invested in, track the values of those investments, and identify top-performing venture capitalists based on the data or information. Thus, a user can identify high-performing venture capitalists based on the enterprise values. The user can then decide to make similar investments.

[0051] A user can also participate in a fund investment. FIG. 8 illustrates an example of an interface for fund investment. FIG. 9 illustrates an example of a block diagram for automation a fund investment. In FIG. 9, at block 905, a fund investment can be generated. For example, in FIG. 8, fund dashboard 805 portrays a process for a user to participate in a fund investment. For example, a funding platform can include fund dashboard 805 to provide funding opportunities in a limited liability corporation (LLC) created for a seller (e.g., a corporation selling equity such as shares of its ownership) as a special purpose "vehicle" (SPV) or mechanism for buyers to purchase. Shares of the LLC can therefore represent an opportunity to invest in for buyers. [0052] For example, in FIG, 8, the fund investment indicates that the LLC is offering 100,000 units or shares at $1 1 a share of a class type of common shares. The total opportunity size is indicated as $10 million and that the minimum investment amount to participate in the fund investment is $50,000. Additionally, some contextual information regarding previous rounds of funding can be detailed, for example, the last value per share, the date of the last funding, and valuation of the business or issuer that is subject to the fund investment.

[0053] At block 910 in FIG. 9, documents can be provided to investors to complete to participate in the funding. For example, portion 810 of fund dashboard 805 indicates that non-disclosure agreement (NDA) should be signed, !f a user selects portion 810, the NDA can be provided to be filled out (e.g., signed and dated). This can ensure the confidentiality of the terms (e.g., share price, opportunity size, etc.) of the fund investment. After providing an executed NDA, this can be analyzed and if deemed to have been properly filled out, then the user can be allowed to further proceed to participate in the fund investment by advancing to portion 815. As more of portions 810-845 are completed, fund participation progress bar 850 advances until the completion percentage indicates 100%, which is indicative of the user completing all of the steps (e.g., portions 810-845) to participate in the fund investment. [0054] The other documents that are provided and/or filled out by the user include portion 815 providing an investor suitability questionnaire. The questionnaire can include questions for the user to answer. Based on the answers, the user may be allowed to proceed with participating in the fund investment, or may be disallowed to participate. Portion 820 allows a user to input how much the user desires to invest (e.g., $50,000). Next, at portion 825, the user can be provided a subscription agreement to sign and at portion 830 the user can be provided an operating agreement to review and sign. The user can also be allowed to fill out tax-related forms such as portion 835 providing a request to fill out a W-9 for the Internal Revenue Service (IRS) to provide a name, address, taxpayer identification information (e.g., social security number), etc.

[0055] A portion 840, the user can provide (e.g., upload) a picture of a government issued identification such as a driver license, passport, etc. At portion 845, the user can wire their desired investment amount from portion 820. When all of portions 810-845 are completed, fund participation progress bar 850 advances to 100%.

[0056] Returning to FIG. 9, at block 915, the platform can receive all of the documents from the investors. When all of the investors are at 100% towards the fund participation progress bar 850, then the fund can be closed at block 920. In some implementations, when the total opportunity size is reached (e.g., $10 million in FIG. 8) then the fund can be closed despite some users not advancing to 100% of the fund participation progress bar 850. Thus, some users might not have provided the proper documentation to be allowed to participate in the investment and, therefore, they can be excluded.

[0057] Representatives of the LLC can also counter-sign the documents of portions 810-845. Once the investment fund is closed, the investors own the appropriate shares of the investment opportunity.

[00S8] FIG. 7 illustrates an example of a device for providing a dynamic waterfall chart and automation a fund investment. In FIG, 7, a user using a computing device 703 (e.g., mobile phone, tablet, desktop computer, laptop computer, smart watch, etc.) can communicate with server 702 implementing the techniques disclosed herein. For example, server 702 includes a processor 705 and memory 710 as well as other types of hardware such as non-volatile memory, an interface device, etc. to implement shares logic 730 providing the techniques disclosed herein. Various common components (e.g., cache memory) are omitted for illustrative simplicity. The assistant device is intended to illustrate a hardware device on which any of the components described in the example of Figs. 1 -8 (and any other components described in this specification) can be implemented. The components of the assistant device can be coupled together via a bus or through some other known or convenient device.

[0059] The processor 705 may be, for example, a microprocessor circuit such as an Intel Pentium microprocessor or Motorola power PC microprocessor. One of skill in the relevant art will recognize that the terms "machine-readable (storage) medium" or "computer-readable (storage) medium" include any type of device that is accessible by the processor. Processor 705 can also be circuitry such as an application specific integrated circuits (ASICs), complex programmable logic devices (CPLDs), field programmable gate arrays (FPGAs), structured ASICs, etc.

[0060] The memory is coupled to the processor by, for example, a bus. The memory can include, by way of example but not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). The memory can be local, remote, or distributed.

[0061] The bus also couples the processor to the non-volatile memory and drive unit. The non-volatile memory is often a magnetic floppy or hard disk; a magnetic-optical disk; an optical disk; a read-only memory (ROM) such as a CDROM, EPROM, or EEPROM; a magnetic or optical card; or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory during the execution of software in the computer. The non-volatile storage can be local, remote or distributed. The non-volatile memory is optional because systems can be created with all applicable data available in memory. A typical computer system will usually include at least a processor, memory, and a device (e.g., a bus) coupling the memory to the processor.

[0062] The software can be stored in the non-volatile memory and/or the drive unit. Indeed, storing an entire large program in memory may not even be possible. Nevertheless, it should be understood that for software to run, it may be necessary to move the software to a computer-readable location appropriate for processing, and, for illustrative purposes, that location is referred to as memory in this application. Even when software is moved to memory for execution, the processor will typically make use of hardware registers to store values associated with the software and make use of a local cache that, ideally, serves to accelerate execution. As used herein, a software program is can be stored at any known or convenient location (from non-volatile storage to hardware registers).

[0063] The bus also couples the processor to the network interface device. The interface can include one or more of a modem or network interface. Those skilled in the art will appreciate that a modem or network interface can be considered to be part of the computer system. The interface can include an analog modem, an ISDN modem, a cable modem, a token ring interface, a satellite transmission interface (e.g., "direct PC"), or other interface for coupling a computer system to other computer systems. The interface can include one or more input and/or output devices. The input and/or output devices can include, by way of example but not limitation, a keyboard, a mouse or other pointing device, disk drives, printers, a scanner, and other input and/or output devices, including a display device. The display device can include, by way of example but not limitation, a cathode ray tube (CRT), a liquid crystal display (LCD), or some other applicable known or convenient display device.

[0064] In operation, the assistant device can be controlled by operating system software that includes a file management system, such as a disk operating system. The file management system is typically stored in the non-volatile memory and/or drive unit and causes the processor to execute the various acts required by the operating system to input and output data, and to store data in the memory, including storing files on the non-volatile memory and/or drive unit.

[0065] Some items of the detailed description may be presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electronic or magnetic signals capable of being stored, transferred, combined, compared, and/or otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

[0066] It should be borne in mind, however, that ail of these and similar terms are to be associated with the appropriate physical quantifies and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, those skilled in the art will appreciate that throughout the description, discussions utilizing terms such as "processing" or "computing" or "calculating" or "determining" or "displaying" or "generating" or the like refer to the action and processes of a computer system or similar electronic computing device that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system's memories or registers or other such information storage, transmission, or display devices. [0067] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatuses to perform the methods of some embodiments. The required structure for a variety of these systems will be apparent from the description below, !n addition, the techniques are not described with reference to any particular programming language, and various embodiments may thus be implemented using a variety of programming languages.

[0068] In further embodiments, the assistant device operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the assistant device may operate in the capacity of a server or of a client machine in a client-server network environment or may operate as a peer machine in a peer-to-peer (or distributed) network environment.

[0069] In some embodiments, the assistant devices include a machine- readable medium. While the machine-readable medium or machine-readable storage medium is shown in an exemplary embodiment to be a single medium, the term "machine-readable medium" and "machine-readable storage medium" should be taken to 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 sets of instructions. The term "machine-readable medium" and "machine- readable storage medium" should also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the machine, and which causes the machine to perform any one or more of the methodologies or modules of the presently disclosed technique and innovation.

[0070] In general, the routines executed to implement the embodiments of the disclosure may be implemented as part of an operating system or a specific application, component, program, object, module, or sequence of instructions referred to as "computer programs." The computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer that, when read and executed by one or more processing units or processors in a computer, cause the computer to perform operations to execute elements involving various aspects of the disclosure. [0071] Moreover, while embodiments have been described in the context of fully functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments are capable of being distributed as a program product in a variety of forms, and that the disclosure applies equally, regardless of the particular type of machine- or computer-readable media used to actually effect the distribution.

[0072] Further examples of machine-readable storage media, machine- readable media, or computer-readable (storage) media include, but are not limited to, recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g. , Compact Disc ReadOnly Memory (CD-ROMS), Digital Versatile Discs, (DVDs), etc.), among others, and transmission type media such as digital and analog communication links.

[0073] In some circumstances, operation of a memory device, such as a change in state from a binary one to a binary zero or vice-versa, for example, may comprise a transformation, such as a physical transformation. With particular types of memory devices, such a physical transformation may comprise a physical transformation of an article to a different state or thing. For example, but without limitation, for some types of memory devices, a change in state may involve an accumulation and storage of charge or a release of stored charge. Likewise, in other memory devices, a change of state may comprise a physical change or transformation in magnetic orientation or a physical change or transformation in molecular structure, such as from crystalline to amorphous or vice-versa. The foregoing is not intended to be an exhaustive list in which a change in state for a binary one to a binary zero or vice-versa in a memory device may comprise a transformation, such as a physical transformation. Rather, the foregoing is intended as illustrative examples.

[0074] A storage medium may typically be non-transitory or comprise a non- transitory device. In this context, a non-transitory storage medium may include a device that is tangible, meaning that the device has a concrete physical form, although the device may change its physical state. Thus, for example, non-transitory refers to a device remaining tangible despite this change in state.

[0075] The foregoing description of various embodiments of the claimed subject matter has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the claimed subject matter to the precise forms disclosed. Many modifications and variations will be apparent to one skilled in the art. Embodiments were chosen and described in order to best describe certain principles and practical applications, thereby enabling others skilled in the relevant art to understand the subject matter, the various embodiments and the various modifications that are suited to the particular uses contemplated.

[0076] While embodiments have been described in the context of fully functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments are capable of being distributed as a program product in a variety of forms and that the disclosure applies equally regardless of the particular type of machine- or computer-readable media used to actually effect the distribution.

[0077] Although the above Detailed Description describes certain embodiments and the best mode contemplated, no matter how detailed the above appears in text, the embodiments can be practiced in many ways. Details of the systems and methods may vary considerably in their implementation details while still being encompassed by the specification. As noted above, particular terminology used when describing certain features or aspects of various embodiments should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the disclosed technique with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the disclosure to the specific embodiments disclosed in the specification, unless those terms are explicitly defined herein. Accordingly, the actual scope of the technique encompasses not only the disclosed embodiments but also all equivalent ways of practicing or implementing the embodiments under the claims. [0078] The language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the technique be limited not by this Detailed Description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of various embodiments is intended to be illustrative, but not limiting, of the scope of the embodiments, which is set forth in the following claims.

[0079] From the foregoing, it will be appreciated that specific embodiments of the invention have been described herein for purposes of illustration, but that various modifications may be made without deviating from the scope of the invention. Accordingly, the invention is not limited except as by the appended claims.