This invention relates generally to print drivers.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, the approaches described in this section may not be prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Generally speaking, print drivers are processes that process print data generated by an application program and convert the print data into a format supported by a printing device that is intended to process the print data. For example, a user creates an electronic document using a word processing application. The user then selects a print option in the application program to request that the electronic document be printed to a particular printing device. The application program generates and provides print data to a print driver installed on the user's client device. Sometimes this involves the use of an intermediary process referred to as a spooler which saves the print data locally. The print driver processes the print data and generates translated print data that is in a format supported by the particular printing device. For example, the print driver may process the print data and generate translated print data that conforms to the postscript format. The print driver then transmits the translated print data to the particular printing device. The particular printing device processes the translated print data and generates a printed version of the electronic document.
Conventional print drivers are printing device specific. That is, each print driver is designed to translate print data into a format that conforms to a particular format supported by a particular printing device. The device-specific nature of print drivers is the reason for several drawbacks. One issue is that a print driver for each printing device that a user is interested in using must be installed on a user's client device. Print drivers are usually provided on storage media when a printing device is purchased and may also be downloaded over the Internet. When a user travels to a different location the user may not know what printing devices are available to the user or the capabilities of the available printing devices and in many cases does not have the correct driver or access to the Internet to download a correct print driver. Users typically must inquire as to the available printing devices and their capabilities and also must acquire, install and configure the necessary print drivers. These problems can be exacerbated when users are using small portable devices with limited user interfaces because downloading, installing and configuring print drivers can be more difficult with these types of limited devices. Furthermore, users must know how to configure the printing devices once the print drivers are installed. For example, users must generally know the IP address and port of a printing device to configure the print driver. Thus, when users travel to different locations with mobile devices, they often find it difficult to use printing devices at those locations.
A universal print driver allows an application program to print to any printer available on a network without the user having to perform the configuration that is required in conventional printing arrangements. The universal print driver includes functionality for performing printing device discovery to determine printing devices that are available to process print data. The discovery functionality may include different levels of discovery, depending upon a particular implementation. For example, the discovery functionality may be implemented using a simple discovery mechanism that discovers a subset of available information or using a full discovery mechanism that discovers a full set of available information, such as the identity, physical location, installed options and settings and current status of printing devices. The universal print driver allows users to manage options and settings for printing devices through the universal print driver. For example, the universal print driver may provide a favorite destinations list that allows users to save, view and retrieve information for printing devices. The universal print driver may also be configured with a “best fit” matching function that selects an available printing device to process print data that has characteristics that most closely match user-specified characteristics. The universal print driver generates a graphical user interface that allows users to view printing devices available to process print data and to select options and settings for printing devices.
According to one embodiment of the invention, a computer-implemented method is provided for a print driver to process print data. The computer-implemented method includes the print driver receiving settings data that indicates one or more user-specified settings to be used to process the print data. The print driver generates a graphical user interface that includes a search option. The print driver detects a user selection of the search option. In response to the print driver detecting the user selection of the search option, the print driver discovers, over a network, a set of one or more printing devices that are available to process the print data, wherein the discovering of the set of one or more printing devices includes discovering installed options and current settings of each printing device in the set of one or more printing devices. The print driver selects, from the set of one or more printing devices based upon the settings data, a best fit printing device that is best able to process the print data. The print driver updates the graphical user interface to identify both the set of one or more printing devices and the best fit printing device. The print driver detects user input that indicates a user selection of a particular printing device from the set of one or more printing devices. The print driver processes the print data and generating processed print data that conforms to a format supported by the particular printing device. The print driver also causes the processed print data to be transmitted over a network to the particular printing device.
In the figures of the accompanying drawings like reference numerals refer to similar elements.
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention. Various aspects of the invention are described hereinafter in the following sections:
A universal print driver allows an application program to print to any printer available on a network without the user having to perform the configuration that is required in conventional printing arrangements. The universal print driver includes functionality for performing printing device discovery to determine printing devices that are available to process print data. The discovery functionality may include different levels of discovery, depending upon a particular implementation. For example, the discovery functionality may be implemented using a simple discovery mechanism that discovers a subset of available information or using a full discovery mechanism that discovers a full set of available information, such as the identity, physical location, installed options and settings and current status of printing devices. The universal print driver allows users to manage options and settings for printing devices through the universal print driver. For example, the universal print driver may provide a favorite destinations list that allows users to save, view and retrieve information for printing devices. The universal print driver may also be configured with a “best fit” matching function that selects an available printing device to process print data that has characteristics that most closely match user-specified characteristics. The universal print driver generates a graphical user interface that allows users to view printing devices available to process print data and to select options and settings for printing devices.
II. Universal Print Driver Architecture
Client device 102 may be any type of client device and the invention is not limited to any particular type of client device. Examples of client device 102 include, without limitation, a desktop computer, a laptop computer, a personal digital assistant (PDA), a mobile device and a telephony device. In the present example, client device 102 includes a user interface 114, applications APP1116, APP2118 and APP3120, a spooler 122, a port monitor 124, a universal print driver 126 and storage 128.
Printing devices 104, 106, 108, 110 may be any type of device that is capable of processing print data and generating a printed version of an electronic document reflected in the print data. Examples of printing devices 104, 106, 108, 110 include, without limitation, printers, network-enabled copy machines and multi-function peripherals (MFPs), and the approaches described herein are not limited to any particular type of printing devices 104, 106, 108, 110. Embodiments of the invention are described herein in the context of four printing devices depicted in
User interface 114 may be implemented by any mechanism(s) and/or process(es) that allow for the exchange of information between client device 102 and users. Examples of user interface 114 include, without limitation, a display, such as a cathode ray tube (CRT) or liquid crystal display (LCD), and an input device, such as a keypad, touchpad, touch screen, keyboard or mouse, or any combination of displays and input devices.
Applications APP1116, APP2118 and APP3120 may be any type of applications that are capable of generating print data. Examples of applications APP1116, APP2118 and APP3120 include, without limitation, a word processing program, a spreadsheet program, an email program or any other type of application.
Universal print driver 126 may be implemented in computer software, computer hardware, or any combination of computer hardware and software. For example, universal print driver 126 may be implemented as one or more software processes executing on client device 102. As another example, universal print driver 126 may be implemented as executable code installed on client 102. According to one embodiment of the invention, universal print driver 126 includes a print driver user interface (UI) module 130, a port selection UI module 132 and a rendering module 134. Universal print driver 126 may include other modules, elements and functionality not depicted in
Storage 128 may be implemented by any type of storage. Examples of storage 128 include, without limitation, volatile memory, such as random access memory (RAM) and non-volatile storage, such as one or more disks or flash memory. Client device 102 may include other mechanisms, modules, processes, etc., depending upon a particular implementation, that are not depicted in
III. Accessing and Managing Printing Devices Using the Universal Print Driver
According to one embodiment of the invention, universal print driver 126 is configured to generate a graphical user interface that allows users to access and manage printing devices that are available to process print data.
As depicted in
Printer destinations screen 200 also includes an advanced button 216, which when selected, allows a user to manage the printing devices maintained in the favorite destinations list 208. In response to detecting a selection of the advanced button 216, universal print driver 126 causes an advanced settings screen 400 to be displayed as depicted in
IV. Printing Device Discovery
According to one embodiment of the invention, universal print driver 126 is configured to discover printing devices that are available to process print data. Universal print driver 126 may implement any type of discovery mechanism to discover printing devices. For example, universal print driver 126 may be configured to transmit multicast messages over network 112 to discover printing devices 104, 106, 108, 110. As another example, universal print driver 126 may implement a Web Services discovery mechanism to discover printing devices 104, 106, 108, 110. Universal print driver 126 may be configured to perform discovery at specified times, for example on a periodic basis, or in response to a user request, as described in more detail hereinafter.
Universal print driver 126 may be configured to perform different types of discovery. According to one embodiment of the invention, universal print driver 126 is configured to perform simple discovery. Simple discovery generally involves universal print driver 126 discovering a subset of all available information about printing devices that are available to process print data. For example, simple discovery may involve discovering only the identity and physical location of printing devices that are available to process print data and not the installed features and options of those printing devices. Simple discovery may also involve discovering information about a subset of all available printing devices on a network. For example, simple discovery may include performing discovery on a list of specified printing devices.
According to another embodiment of the invention, universal print driver 126 is configured to perform full discovery. Full discovery generally involves universal print driver 126 discovering more information about printing devices that are available to process print data than is discovered using simple discovery. For example, full discovery may include discovering the identity, network address, physical location and installed options and settings of printing devices. Examples of installed options and settings include, without limitation, single or duplex printing, black & white or color printing, installed paper trays and feeders, stapling, punching, folding, cutting and binding capability. Universal print driver 126 may also be configured to discover the current status of printing devices.
As depicted in
V. “Best Fit” Discovery
According to one embodiment of the invention, universal print driver 126 is configured to perform “best fit” discovery of available printing devices. Best fit discovery generally involves determining a particular printing device, from a set of available printing devices, that best satisfies a set of printing device criteria. The printing device criteria may include a wide variety of criteria. For example, a user may specify desired values for options and settings, such as single or duplex printing, black & white or color printing, installed paper trays and feeders, stapling, punching, folding, cutting and binding capability. As previously mentioned herein, the user may also specify search parameter values via user interface controls 404. The printing device criteria may be obtained from a user via a graphical user interface or from other sources. Universal print driver 126 performs discovery to identify available printing devices. Universal print driver 126 then determines which of the available printing devices best satisfies the printing device criteria. Universal print driver 126 may automatically select the best printing device and send print data to the selected printing device. Alternatively, universal print driver 126 may present the available printing devices to a user and identify the particular printing device that universal print driver 126 that has been selected as the “best fit” printing device. Additional details of the “best fit” discovery approach are described in more detail hereinafter.
VI. Example Operational Scenarios
A. Simple Discovery
Simple discovery generally involves universal print driver 126 discovering a subset of all available information about printing devices that are available to process print data. This approach is a “lightweight” approach that consumes relatively fewer computational resources and time compared to the full discovery approach described hereinafter.
In step 604, the universal print driver 126 is launched. For example, universal print driver 126 is launched when a user selects to edit printing device properties through an operating system function or when a user selects to edit printer device properties through application program APP1116, e.g, by selecting File→Print→ and then selecting the name of the universal print driver 126. The universal print driver 126 is launched and the port selection UI module 132 causes printer destinations screen 200 to be generated and displayed to the user on user interface 114.
In step 606, a particular printing device is identified for processing print data 136. According to the simple discovery option, the particular printing device may be identified in one of two ways. First, a user can enter into field 202 an IP address or hostname of a particular printing device and then select confirmation button 210. Alternatively, the user can select the search button 218 to cause the universal print driver 126 to perform simple discovery. With simple discovery, the universal print driver 126 determines the printing devices that are available to process print data and displays them in the search results list 500 depicted in
Once a particular printing device has been specified, either via a user entering an IP address or hostname, or by the user selecting the particular printing device after simple discovery, then in step 608, the user may optionally specify values of standard device settings and printing options to be used with the particular printing device. The standard device settings and printing options are the same for all printing devices discovered using simple discovery and are not specific to any particular printing device. Thus, it is not known which of the standard device settings and printing options are supported by the particular printing device.
In step 610, the user selects to process the print data and the print data is processed and sent to the particular printing device. For example, the user selects a confirmation button from the printing graphical user interface screen generated by application program APP1116. In response to detecting the selection of the confirmation button, the rendering module 134 processes the print data 136 and generates processed print data that conforms to a format supported by the particular printing device. The port monitor 124 causes the processed print data to be transmitted to the particular printing device. In situations where values of the standard device settings and printing options are not supported by the particular printing device, then those values may be ignored. For example, suppose that the user selected duplex printing from the standard device settings but the particular printing device does not support duplex printing. In this situation the particular printing device processes the processed print data using single sided printing.
B. Full Discovery
Full discovery generally involves universal print driver 126 discovering more available information about printing devices than is obtained with the simple discovery approach. This approach requires relatively more computational resources and time than the simple discovery approach, but provides more information to users about the available printing devices.
In step 804, the universal print driver 126 is launched. For example, universal print driver 126 is launched when a user selects to edit printing device properties through an operating system function or when a user selects to edit printer device properties through application program APP1116, e.g, by selecting File→Print→ and then selecting the name of the universal print driver 126. The universal print driver 126 is launched and the port selection UI module 132 causes printer destinations screen 200 to be generated and displayed to the user on user interface 114.
In step 806, a particular printing device is identified for processing print data 136. According to the simple discovery option, the particular printing device may be identified in one of two ways. First, a user can enter into field 202 an IP address or hostname of a particular printing device and then select confirmation button 210. Alternatively, the user can select the search button 218 to cause the universal print driver 126 to perform full discovery. With full discovery, the universal print driver 126 determines the printing devices that are available to process print data and displays them in the search results list 500 depicted in
Once a particular printing device has been specified, either via a user entering an IP address or hostname, or by the user selecting the particular printing device after full discovery, then in step 808, the user may optionally specify values of device settings and printing options to be used with the particular printing device.
In step 810, the user selects to process the print data and the print data is processed and sent to the particular printing device. For example, the user selects a confirmation button from the printing graphical user interface screen generated by application program APP1116. In response to detecting the selection of the confirmation button, the rendering module 134 processes the print data 136 and generates processed print data that conforms to a format supported by the particular printing device. The port monitor 124 causes the processed print data to be transmitted to the particular printing device.
C. “Best Fit” Discovery
In step 1004, the universal print driver 126 is launched. For example, universal print driver 126 is launched when a user selects to edit printing device properties through an operating system function or when a user selects to edit printer device properties through application program APP1116, e.g, by selecting File→Print→ and then selecting the name of the universal print driver 126. The universal print driver 126 is launched and the port selection UI module 132 causes printer destinations screen 200 to be generated and displayed to the user on user interface 114.
In step 1006, the user initiates full discovery of printing devices that are available to print the electronic document. For example, the user selects the search button 218 from printer destinations screen 200.
In step 1008, in response to detecting the selection of the search button 218, the universal print driver 126 performs automatic discovery and determines one or more printing devices that are available and capable to process print data 136 given the settings values selected by the user and reflected in the settings data. As previously mentioned herein, universal print driver 126 may use any type of discovery mechanism or approach to discover the printing devices that are available to process print data 136.
In step 1010, the universal print driver 126 determines the “best fit” printing device. The “best fit” printing device is the printing device among the available printing devices that is best able to print the electronic document based upon print data 136 and print settings values specified by the user and reflected in the settings data. The determination of which of the available printing devices constitutes the “best fit” printing device may be made using a wide variety of techniques, depending upon a particular implementation. For example, the “best fit” printing device may be the particular printing device that supports the largest number of options and features specified by the user and reflected in the settings data. As another example, the settings values specified by the user and reflected in the settings data may be weighted and the weightings used to determine the printing device that best satisfies the settings data. This may include determining a score for each available printing device that was discovered, where a score reflects how well the corresponding printing device supports the options and settings specified in the settings data.
In step 1012, universal print driver 126 causes the results of the “best fit” matching to be displayed to the user. For example, universal print driver 126 may cause the one or more printing devices to be displayed in a list similar to search results list 500. The printing devices in the list may be ordered based upon their relative capabilities to process print data 136. For example, the list may be ordered so that the “best fit” printing device appears at the top of the list with the other printing devices listed in descending order based upon their relative capabilities to process the print data 136 based upon the settings values selected by the user. The “best fit” printing device may also be conspicuously marked or identified as the “best fit” printing device using any type of graphical user interface features. For example, color, shading, highlighting, styling, marking or any other type of feature or graphical user interface object attribute may be selected to identify the “best fit” printing device. The graphical user interface may also indicate the relative capabilities of the printing devices to process the printing data. For example, the printing devices that satisfy at least a high threshold level of support of the options and settings specified in the settings data may be displayed with the color green as an attribute. The printing devices that do not satisfy the high threshold but do satisfy a medium threshold level of support may be displayed with the color yellow as an attribute. The printing devices that do not satisfy at least a lowest threshold level of support may be displayed with the color red as an attribute. Certain settings, as indicated by the settings data, may be designated by a user as required. In this situation, a particular printing device that does not support a required setting may be automatically categorized in the lowest category of printing devices, for example, displayed in the color red. This approach allows a user to easily discern which printing devices are best able to satisfy the settings values selected by the user and may be very convenient in various situations. For example, the user may easily recognize that the best two printing devices will work equally well to process print data. One of the two printing devices, however, may have a closer physical location with respect to the user, so the user may select that printing device. As another example, suppose that a user specifies that an electronic document is to be printed in duplex color and stapled. Suppose further that none of the available printing devices are currently able to provide all three of these services, i.e., duplex printing in color with stapling, but one available printing device provides duplex color printing, but no stapling (either because the printing device is not configured with a stapling option or because the stapling option is not currently available because of an error or a lack of staples), while another printing device provides duplex printing and stapling, but no color printing. In this situation, the graphical user interface generated by the universal print driver 126 visually indicates the particular features that are supported by each printing device and indicates one of the two printing devices as the “best fit” printing device, based upon which options have a higher priority. For example, if the color printing is considered to be more important than the stapling, then the first printing device is designated as the “best fit” printing device. The user may select either printing device, depending upon the features and characteristics that are most important to the user.
As yet another example, the visual attributes of the features displayed in the list of printing devices may reflect the compatibility of those features with the settings value selected by the user. For example, suppose that a user selected color printing and a particular printing device supports only black & white printing. The black & white feature for the particular printing device may be displayed in a different color to draw the user's attention to the fact that the particular printing device does not support color printing.
In step 1014, the user selects a particular printing device from the list of available printing devices generated by the universal print driver 126. For example, a user may use a selection device, such as a mouse, to select the particular printing device from the search results list 500 and then select the confirmation button 502. Once the selection is made, universal print driver 126 causes data that identifies the particular printing device to be stored to make it available for other modules. For example, universal print driver 126 may cause the port information of the particular printing device to be stored, e.g., on storage 128, so that it is available to port monitor 124. The universal print driver 126 also causes the printer destinations screen to be undisplayed and print driver UI module 130 causes the printing graphical user interface screen to be displayed on user interface 114.
In step 1016, the user selects to process the print data and the print data is processed and sent to the particular printing device. This may include the rendering module 134 processing the print data 136 and generating processed print data that is transmitted to the particular printing device. For example, the user selects the confirmation button 502 from the search results list 500. In response to detecting the selection of the confirmation button 502, the rendering module 134 processes the print data 136 and generates processed print data. The port monitor 124 causes the processed print data to be transmitted to the particular printing device.
VII. Implementation Mechanisms
Computer system 1200 may be coupled via bus 1202 to a display 1212, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 1214, including alphanumeric and other keys, is coupled to bus 1202 for communicating information and command selections to processor 1204. Another type of user input device is cursor control 1216, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 1204 and for controlling cursor movement on display 1212. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
The invention is related to the use of computer system 1200 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 1200 in response to processor 1204 executing one or more sequences of one or more instructions contained in main memory 1206. Such instructions may be read into main memory 1206 from another machine-readable medium, such as storage device 1210. Execution of the sequences of instructions contained in main memory 1206 causes processor 1204 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
The term “machine-readable medium” as used herein refers to any medium that participates in providing data that causes a machine to operation in a specific fashion. In an embodiment implemented using computer system 1200, various machine-readable media are involved, for example, in providing instructions to processor 1204 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 1210. Volatile media includes dynamic memory, such as main memory 1206. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 1202. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Common forms of machine-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
Various forms of machine-readable media may be involved in carrying one or more sequences of one or more instructions to processor 1204 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 1200 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 1202. Bus 1202 carries the data to main memory 1206, from which processor 1204 retrieves and executes the instructions. The instructions received by main memory 1206 may optionally be stored on storage device 1210 either before or after execution by processor 1204.
Computer system 1200 also includes a communication interface 1218 coupled to bus 1202. Communication interface 1218 provides a two-way data communication coupling to a network link 1220 that is connected to a local network 1222. For example, communication interface 1218 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 1218 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 1218 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 1220 typically provides data communication through one or more networks to other data devices. For example, network link 1220 may provide a connection through local network 1222 to a host computer 1224 or to data equipment operated by an Internet Service Provider (ISP) 1226. ISP 1226 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 1228. Local network 1222 and Internet 1228 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 1220 and through communication interface 1218, which carry the digital data to and from computer system 1200, are exemplary forms of carrier waves transporting the information.
Computer system 1200 can send messages and receive data, including program code, through the network(s), network link 1220 and communication interface 1218. In the Internet example, a server 1230 might transmit a requested code for an application program through Internet 1228, ISP 1226, local network 1222 and communication interface 1218. The received code may be executed by processor 1204 as it is received, and/or stored in storage device 1210, or other non-volatile storage for later execution. In this manner, computer system 1200 may obtain application code in the form of a carrier wave.
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is, and is intended by the applicants to be, the invention is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
6529286 | King | Mar 2003 | B1 |
6825941 | Nguyen et al. | Nov 2004 | B1 |
20020051204 | Ohara | May 2002 | A1 |
20020120742 | Cherry | Aug 2002 | A1 |
20020135798 | Simpson et al. | Sep 2002 | A1 |
20030090694 | Kennedy et al. | May 2003 | A1 |
20030231328 | Chapin et al. | Dec 2003 | A1 |
20040061890 | Ferlitsch | Apr 2004 | A1 |
20070233834 | Hattori et al. | Oct 2007 | A1 |
Number | Date | Country |
---|---|---|
1 178 392 | Feb 2002 | EP |
9006557 | Jan 1997 | JP |
2001142665 | May 2001 | JP |
2001282492 | Oct 2001 | JP |
200330638 | Nov 2003 | JP |
2005071175 | Mar 2005 | JP |
2005228243 | Aug 2005 | JP |
Number | Date | Country | |
---|---|---|---|
20080180699 A1 | Jul 2008 | US |