Abstract:
Circuits, methods, and apparatus for testing media player accessories. One example includes an accessory validation system including hardware, firmware, and software. This example provides two test modes, referred to a sniff mode and an emulation mode. In the sniff mode, a test box may be inserted between an accessory and a media player. Traffic between the accessory and media player may be monitored and the presence of errors may be determined. In the emulation mode, the accessory validation system hardware emulates a media player. The emulator provides various types of responses to the accessory that would otherwise occur infrequently with an actual media player. The tests to be completed in these modes are compiled based on the category of functions that an accessory maker wishes to claim for the accessory. These category claims are then converted into a number of rules. From these rules, specific tests are generated.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application claims the benefit of U.S. provisional application No. 61/020,719, filed Jan. 13, 2008, titled “Accessory Validation System,” which is incorporated by reference. 
    
    
     BACKGROUND 
     Media players have become extraordinarily popular during the past several years. As a result, accessories that operate with these media players have proliferated. These accessories include speaker systems, remote controls, FM tuners and transmitters, chargers, as well as a myriad of others. The result is that currently many different accessories are made by many different manufacturers. 
     These manufacturers have developed test methods to ensure that their accessories are compatible with one or more of these media players. To date, testing has been typically limited to testing an accessory with a media player attached. However, some real-world events may happen only on rare occasions, too infrequently for reliable testing. Moreover, the operation of a media player may later change after a software or firmware update. This may result in a change in the operability of an accessory with a media player. 
     To avoid this circumstance, specifications for these accessories have been developed. An accessory manufacturer needs to meet these specifications in order to claim compliance with one or more particular media players. Unfortunately, some accessories may not meet one or more of these specifications. Such a violation may go unnoticed if during testing with a media player, the specification violation does not cause an actual error. However, at a later time, the software or firmware of the media player, or the media player itself, may be updated. The previously unnoticed specification violation may then cause an error when the accessory operates with the updated device. 
     This is highly undesirable for the manufacturer of the media player. If an update causes a media player to operate incorrectly with an accessory, a consumer is likely to place blame with the media player manufacturer that provided the update, rather than the accessory manufacturer that made an accessory having a specification violation. 
     Thus, what is needed are circuits, methods, and apparatus for testing accessories that can determine whether an accessory is violating one or more of these specifications. It is further desirable that testing include tests for occurrences that occur infrequently when using a media player. 
     SUMMARY 
     Accordingly, embodiments of the present invention provide circuits, methods, and apparatus for testing media player accessories. Compliance with a testing procedure using embodiments of the present invention may be required to gain a certification that an accessory is interoperable with one or more media players. As part of the certification, a showing that testing has been completed without errors may be required. 
     A specific embodiment of the present invention includes an accessory validation system. This system may include accessory validation system hardware and software. The hardware may further include accessory validation system firmware. The accessory validation system provides two test modes, referred to as a sniff mode and an emulation mode. In the sniff mode, a test box, the accessory validation system hardware, may be inserted between an accessory and a media player. During testing, traffic such as data transfers, commands, voltage levels, impedances, and other information can be sniffed, that is monitored, and provided to accessory validation system software. The accessory validation system software reads the traffic and looks for errors. These tests may be conducted for each media player for which certification is sought. 
     In the emulation mode, a media player may not be needed; instead, part of the accessory validation system hardware acts to emulate a media player. The emulator provides various types of responses to the accessory. For example, it may provide responses that occur infrequently with an actual media player. The emulator may also provide signals and responses having worst-case timing or other characteristics. Other such stress tests may be performed using the emulator. 
     The tests to be completed in these modes are compiled based on the category of functions that an accessory maker wishes to claim for the accessory. These category claims are then converted into a number of rules. For example, if the accessory is intended to operate as a remote control, it should be able to follow the rules for a number of functions, such as skip, play, pause, and the like. From these rules, specific tests are generated. In various embodiments of the present invention, additional user-defined tests may be added. 
     The tests to be run can test the accessory at a number of levels. A hardware level can be tested to ensure that the accessory is providing signals having the correct voltage, that correct impedances are being provided, and that certain pins that are to be forced to specific voltages are indeed forced to that voltage. The formatting of the signals themselves can also be tested. For example, whether the frequency of the signals provided by the accessory may be tested. The format of the packets of data sent from the accessory to the media player may be tested. Also, the packets sent to the media player can be checked for logical sense. These tests all are part of ensuring that the accessory performs the category function or functions that are claimed. 
     Various embodiments of the present invention may incorporate one or more of these and the other features described herein. A better understanding of the nature and advantages of the present invention may be gained by reference to the following detailed description and the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of an accessory validation system according to an embodiment of the present invention; 
         FIG. 2  illustrates a portion of an accessory certification process according to an embodiment of the present invention; 
         FIGS. 3A and 3B  illustrate the activities in an accessory validation system during a sniff test according to an embodiment of the present invention; 
         FIG. 4  illustrates the steps performed during testing with an accessory validation system according to an embodiment of the present invention; 
         FIG. 5  is a flowchart of a method of performing sniff tests according to an embodiment of the present invention; 
         FIG. 6  illustrates the levels of testing performed by an embodiment of the present invention; 
         FIG. 7  illustrates a method of determining whether errors have occurred during testing according to an embodiment of the present invention; 
         FIGS. 8A and 8B  illustrate the activities in an accessory validation system during emulation testing according to an embodiment of the present invention; 
         FIG. 9  is a flowchart of a method of performing emulation tests according to an embodiment of the present invention; 
         FIG. 10  is a flowchart of an accessory validation system operating in both in the sniff and emulator modes according to an embodiment of the present invention; 
         FIG. 11  illustrates a menu for entering category compatibility claims according to an embodiment of the present invention; 
         FIGS. 12A-12C  are screenshots showing information provided to a user during a sniff mode test, or during an emulation mode test when sniff data is being provided; 
         FIG. 13  illustrates sniffer data generated by the accessory validation system when a media player is connected to the accessory NVIDIA in the accessory validation system hardware; 
         FIG. 14  illustrates real-time or stored sniffer data indicating that the accessory has been disconnected; and 
         FIG. 15  illustrates a tests summary window that may be provided via a user interface according to an embodiment of the present invention. 
     
    
    
     DESCRIPTION OF EXEMPLARY EMBODIMENTS 
       FIG. 1  is a block diagram of an accessory validation system according to an embodiment of the present invention. This figure, as with the other included figures, is shown for illustrative purposes and does not limit either the possible embodiments of the preset invention or the claims. 
     This figure includes an accessory validation system that includes a hardware and firmware portion, as well as a software portion running on a computer. The accessory validation system hardware may be connected between an accessory under test and a media player, though for some tests a media player may not be required. The accessory validation system firmware resides on the accessory validation system hardware. The computer may be coupled to a data I/O that may include a terminal, mouse, and keyboard. 
     The accessory validation system hardware communicates with the accessory validation system software residing on the computer via a cable or by wireless transmission. The accessory validation system hardware may connect to the accessory using a physical connector, such as the 30-pin connector disclosed in copending U.S. application Ser. No. 10/423,490, titled Media Player System, which is incorporated by reference. Typically, the accessory provides a male or insert portion of a connector and the accessory validation system provides a female or receptacle portion of a connector for coupling to the accessory. In other embodiments of the present invention, the accessory validation system hardware connects to the accessory using either another type of connector or a wireless connection. Similarly, the accessory validation system hardware may connect to the media player using a 30-pin connector. Typically, the media player uses a female or receptacle portion of the connector and the accessory validation system hardware provides a male or insert portion of a connector for coupling to the media player. Other embodiments of the present invention employ other connectors, cables, or wireless connections. For example, wireless protocols such as Bluetooth, WiFi, 802.11, or other wireless standard or proprietary signaling may be used for one or more the connections discussed here. 
     In a specific embodiment of the present invention, the accessory validation system firmware may be updated by the accessory validation system software residing on the computer. In other embodiments of the present invention, the firmware may be updated using an Internet connection, by using a program written to a CD-ROM, or by other methods. The software can be updated using an Internet connection, CD-ROM, or by other methods. 
     The computer may be a computer manufactured by Apple Inc. of Cupertino, Calif. In other embodiments of the present invention, the accessory validation system hardware provides enough computing power and a user interface such that a separate computer is not needed. The media player may be one of several media players, for example, a media player manufactured by Apple Inc. Typically, an accessory is verified using a number of different types of media players. 
     Again, the accessory validation system is particularly useful in providing a mechanism for assuring consumers that an accessory properly operates with a particular media player. To provide such assurance, an embodiment of the present invention provides a method of certification whereby an accessory can be certified as being operable with one or more types of media players. A testing procedure for such a certification method that employs an accessory validation system is shown in the following figure. 
       FIG. 2  illustrates a portion of an accessory certification process according to an embodiment of the present invention. In this example, the testing portion of the certification process involves testing an accessory with one or more media players and a media player emulator. In other embodiments of the present invention, the testing may be limited to the testing of an accessory with one or more media players, while other embodiments of the present invention only employ testing with a media player emulator. 
     Specifically, this accessory validation system provides testing in two modes. The first mode is referred to as a sniff mode. In sniff mode, the accessory communicates with a media player while an accessory validation system monitors traffic between them, such as data transfers, power on or off events, and the like. Testing in this mode may be repeated for a number of media players. In one embodiment of the present invention, testing may be performed with each media player that the accessory is to be certified as being operational. Sniff testing may be particularly useful in ensuring that an accessory operates with the actual media players for which it is being certified. 
     The second mode is referred to as an emulator mode. In this mode, the emulator mimics the operation of a media player and also provides erroneous and worst-case responses. Again, the accessory validation system monitors traffic between the accessory and an emulation portion of the accessory validation system. Emulator testing may be particularly useful for generating states and events that typically do not occur when using an actual media player in the absence of error or other unusual circumstance. For example, if an accessory is required to provide authentication information, if it provides the authentication information correctly, it will not receive a follow-up request for the same information from a functional media player. If testing is performed using only real media players, the accessory response to the follow-up request will not be tested. Accordingly, the emulator may be used to generate a follow-up request and test the accessory&#39;s response to it. 
     Specifically, in act  210 , the test system components are received and the test system may be set up. A media player may be inserted and, depending on the accessory, the device may be turned on. In act  220 , the capabilities of the accessory are determined. For example, it may be determined that the accessory has a remote control, can charge the media player, and provides an FM tuner function, but does not provide an FM transmitter. In act  230 , it is determined which media players will be compatible with the accessory. This selection may be determined by the media player manufacturer. For example, to gain certification for a specific media player, certification for one or more other media players may be required to ensure interoperability and meet consumer expectations. 
     Once the intended capabilities and compatibility of the accessory is determined, sniff tests can be performed for each compatible device in act  240 . Again, tests are performed with the accessory connected to a media player through an accessory validation system, and traffic between the accessory and the media player may be monitored. These tests are repeated for each device for which the accessory manufacturer is seeking to show compatibility. 
     In act  250 , emulation tests may be performed. Again, these tests may mimic the operation of a media player. These tests may include purposefully sending erroneous data to the accessory, they may include sending signals having a worst-case (or “poor-case” timing), or other such “stress” testing. Further, these tests may involve repeatedly sending an instruction to the accessory. 
     In various embodiments of the present invention, results may be made available to a user. This may be particularly useful for debugging purposes in the event of an error. Also, in typical embodiments of the present invention, after testing, whether it is sniff testing, emulation testing, or both, results may be made available to a user. These results may be in one or more of a number of formats. For example, results may be presented in a simple pass/no pass or red light/green light manner, indicating whether the series of tests have been properly completed. More detailed responses showing traffic between an accessory and media player during an error may be provided. This traffic information may be supplemented with information regarding traffic before and after the error event. Also, if an event does not qualify as an error but would otherwise raise a concern, it may be highlighted as a warning to the user. Other information such as specific electrical characteristics may be provided. This may include component values, signal frequencies, voltage levels, and the like. 
     Once passing test results have been achieved for each compatible device, test results may be submitted for certification in act  250 . To ensure the validity of the validation process, this data may be protected from tampering or alteration, for example by using a digital signature. If complete passing results are not yet available, in some embodiments of the present invention, partial or incomplete results may be sent, for example in an attempt to seek assistance. 
       FIGS. 3A and 3B  illustrate the activities in an accessory validation system during a sniff test according to an embodiment of the present invention. In  FIG. 3A , a user, typically an accessory manufacture seeking certification enters category claims via a user interface by using a keyboard, or mouse, or other input device. Again, these category claims identify the functionality provided by the accessory. Example functions include a charger, remote control, FM tuner, and others. Following that, the accessory validation software receives the category claims. The accessory validation software then generates rules from the category claims. These rules identify the performance requirements of the accessory. Examples of rules include sending a proper play/pause command when a play/pause button on an accessory is pressed and waiting for an acknowledgement before resending the play/pause command. 
     From these rules, the software then generates sniff tests. The accessory validation system software then configures the accessory validation system hardware and firmware for the tests. Often, the hardware may be reconfigured for every test or for every group of tests. A test prompt may be then provided by the accessory validation system software to the user via a user interface. The test prompt may be as simple as “press the play/pause button.” The test prompt may be then read by the user, typically on a monitor, and the user performs the prompted action on the accessory. 
     In  FIG. 3B , the accessory sends signals to the media player via the accessory validation system. The media player may respond to the accessory, for example with an acknowledgment that it has paused. The accessory validation system hardware provides sniff data to the accessory validation system software. From this, the accessory validation software can determine results, including error data. These results may be provided to the user via the user interface. The user typically reads the results via a monitor. In the case of errors, the user may review data to determine the cause of the error. 
     Typically, the accessory validation system software prompts the user to perform a series of tests. Before each test, the accessory validation system software reconfigures the accessory validation system hardware and firmware for the upcoming test. During each test, the accessory validation system sniffs the activity between the accessory and the media player. Following each test, the accessory validation system software determines the presence of an error, though in various embodiment of the present invention, the presence of errors may be determined following a number tests or after all of the tests have been completed. Sniff testing is explained further in the following figure. 
       FIG. 4  illustrates the steps performed during testing with an accessory validation system according to an embodiment of the present invention. These acts are used for testing in both sniff and emulation mode. In this figure, category claims and compatibility claims have been entered, rules have been generated using these claims, and from these rules, a list of required tests has been generated. 
     In act  410 , the first (or next) test to be performed is determined. In act  420 , the accessory validation system software configures the accessory validation system hardware and firmware. In act  430 , a prompt is provided to the user to perform a specific task on an accessory. In act  440 , the user performs the task. Again, an example of a test is to press a play/pause button. In act  450 , traffic to and from the accessory is sniffed by the accessory validation system hardware and provided to the accessory validation system software. The presence of errors is determined in act  460 . In act  470 , it is determined whether the last test has been run. If it has, an error report may be generated and provided in act  480 . If not, then the next test to be performed is determined in act  410 , and the testing sequence begins anew. 
     Again, embodiments of the present invention may provide either or both a test mode and an emulation test mode. A flowchart illustrating sniff testing is shown in the following figure. 
       FIG. 5  is a flowchart of a method of performing sniff tests according to an embodiment of the present invention. In act  510 , accessory category capabilities or claims are received via a user interface. In act  520 , rules for the accessory are determined. In act  530 , these rules are used to determine sniff tests. In various embodiments of the present invention, other tests, such as tests defined by a user, may be included. In act  540 , the software configures the hardware and firmware. A user may be prompted via a user interface to perform tasks for the sniff tests. Again, this may be repeated for each type of media player for which compatibility certification is sought. While the tests are conducted, traffic between the media player and accessory are monitored in act  560 . In act  570 , the presence of errors is detected. The error information may be provided to the user via the user interface in act  580 . The user may request specific data via the user interface. For example, sniff data captured during an error condition may be requested. This information may be provided via the user interface in act  595 . 
     Testing performed in both sniff and emulation modes may test the accessory at one or more levels. These levels are described in the following figure. 
       FIG. 6  illustrates the levels of testing performed by an embodiment of the present invention. In this example, the lowest level is the hardware or physical level. Testing of this level involves determining whether the accessory is providing signal levels having the proper voltages, and other such characteristics. 
     The next level is the transport level. Testing of this level involves ensuring that the data signals provided by the accessory have the correct frequency and other such characteristics. 
     The intermediate level is the packet structure later. This level may be tested by checking the structure of each data packet sent to the media player. For example, a pause/play instruction, which is an instruction to pause if playing and play if paused, may be tested to determine whether it is properly organized such that it can be understood by the media player. 
     The next level is the multi-packet logic level. Testing at this level checks that packets are sent in a logical manner. For example, after a particular media player receives a play/pause instruction, it should send an acknowledgment signal back to the accessory. The accessory should wait for this acknowledgment signal before sending a status request to the media player. If the accessory sends the status request to the media player before it receives this acknowledgment signal, the accessory cannot know whether the media player is responding to the status request with the status before the original play/pause instruction. This may lead to an unfortunate circumstance where the media player responds that it is playing and then pauses in response to the first play/pause instruction, only to receive a second play/pause command, which causes it to resume playing. 
     The highest level in this example is the accessory category capabilities level. This testing involves whether the accessory has a particular capability. For example, if the accessory is to have the capability of acting as a remote, the accessory needs to be able to pause, play, skip, and the like. Only if it can perform each of these required functions can the accessory pass this category capability level. 
     In various embodiments of the present invention, some or all of these tests may be performed using an accessory validation system. For example, for a USB device, a third-party USB tester may be used to test the hardware and transport level, while an accessory validation system may be used to test the upper three levels. For example, as described above, a media player may connect to an accessory in a wireless manner, for example using 802.1a, b, g, Bluetooth, WiFi, WiLAN, or other wireless standard. While testing, the wireless transmissions between the accessory and media player may be sniffed by the accessory validation system hardware. In such a case, the accessory validation system may test the wireless connection itself, that is, it may test the lowest two levels. Alternately, another test system may be used to test the physical and transport levels. Testing of all five of these levels is illustrated in the following figure. 
       FIG. 7  illustrates a method of determining whether an accessory has made an error during testing according to an embodiment of the present invention. It is determined whether the accessory is properly providing signals to the media player in act  710 . In act  720 , it is determined whether the timing and other such parameters for the signals provided by the accessory are correct. In act  730 , it is determined whether the packets provided by the accessory are properly formed. It is determined whether the packets provided by the accessory are provided in logical sequence in act  740 . In act  750 , it is determined whether the accessory meets the category capabilities that are claimed. If there is an error at any of these steps, the testing process may either continue or error data may be generated and provided to a user interface, depending on an exact implementation of an embodiment of the present invention. 
     Again, embodiments of the present invention provide either or both a sniff-testing mode and an emulation-testing mode. An emulation mode according to an embodiment of the present invention is discussed in the following figures. In these figures, since the accessory validation system is acting as an emulator, a media player may not be required; though it may typically remain attached for convenience purposes when emulation mode testing is combined with sniff testing. 
       FIGS. 8A and 8B  illustrate the activities in an accessory validation system during emulation testing according to an embodiment of the present invention. In  FIG. 8A , a user, again typically an accessory manufacturer, inputs category claims using a user interface. The accessory validation system software receives the category claims. The accessory validation system software then generates rules from the category claims. From these rules, the accessory validation system software generates emulation tests. The accessory validation system software configures the accessory validation system hardware and firmware for each test. The accessory validation system software provides test prompts. Test prompts are read by the user, who then performs the prompted action on the accessory. 
     In  FIG. 8B , the accessory sends signals to the accessory validation system. The accessory validation system responds to the accessory as a media player. From this signaling, the accessory validation system determines results such as error events and provides them to the user via the user interface. The user may then read the results. A flowchart outlining this is shown in the following figure. 
       FIG. 9  is a flowchart of a method of performing emulation tests according to an embodiment of the present invention. In act  910 , accessory category capabilities are received from a user interface. Rules for the accessory are determined from the claimed accessory categories in act  915 . In act  920 , lists of tests for the emulator mode are determined. In various embodiments of the present invention, the user may add tests to the test list. The accessory validation system hardware and firmware are configured for these tests in act  925 . Again, the hardware and firmware may be typically configured before each or every group of tests; this process is shown once for simplicity. The user may be prompted to perform the tests. Instructions and other information sent from the accessory to the accessory validation system are sniffed in act  935 . In act  940 , a response may be provided by the accessory validation system. This response may have a worst-case property associated with it. 
     In act  945 , the presence of errors is determined. This error information is provided to the user interface in act  950 . In act  955 , a request for specific sniff data from the user interface may be received. For example, the user may be interested in a particular error event. The specifics of the error data may be provided to the user via the user interface in act  960 . 
       FIG. 10  is a flowchart illustrating an accessory validation system operating in both in sniff and emulator modes according to an embodiment of the present invention. As before, accessory category capabilities or claims are received from a user interface in act  1010 . From these category claims, rules for the accessory are determined in act  1020 . In act  1030 , tests for a sniff mode are determined. Tests for an emulator mode are determined in act  1040 . 
     The accessory validation system hardware and firmware are configured in act  1050 . Again, they are typically configured before each test, or before each group of tests; configuration is shown once for simplicity. In act  1060 , prompts are provided to the user interface for the sniff mode test. Again, this may be done for each compatible device. In act  1070 , traffic between the accessory and the accessory validation system are sniffed and from this data errors are determined. 
     In act  1080 , prompts are provided to the user interface for the emulator mode tests. Again, traffic between the accessory and accessory validation system is sniffed, responses are provided, and errors are determined in act  1090 . This error information may be provided to the user via a user interface in act  1095 . 
     Exemplary screenshots illustrating information provided by an accessory validation system to a user via a user interface are shown in the following figures. 
       FIG. 11  illustrates a menu for entering category compatibility claims according to an embodiment of the present invention. It is desirable that these compatibility claims be specific enough to narrowly identify functions for accessory. That is, if an accessory is to operate as a remote, it need not have the capabilities of an FM tuner, so these can be separate compatibility claims. It is also desirable that these compatibility claims be broad enough that they capture functions that a user would expect them to have. For example, accessory operating as a remote should be able to pause, play, skip songs, and the like. A remote that does not perform a pause function would not live up to consumer expectations. However, making an accessory manufacturer identify the pause function as a requirement would be unduly burdensome and limit the usefulness of the accessory validation system. 
     In this example, a user enters these category claims by checking an enable box. This particular accessory includes a remote, a USB charger, and an FM tuner. This accessory may be a boom box having an FM radio, or other similar device. 
       FIGS. 12A-12C  are screenshots showing information provided to a user during a sniff mode test, or during an emulation mode test when sniff data is being provided, for example to determine the source of an error.  FIG. 12A  illustrates a first window showing real-time or captured sniff data as well as a second window illustrating electrical information and other data. 
       FIG. 12B  is a detailed shot of the left window of  FIG. 12A . This figure illustrates real-time or previously captured traffic between an accessory and a media player via or accessory validation system hardware emulator. This screen provides a list of transactions such that accessory hardware, firmware, or software can be debugged. In this example, it can be seen that the accessory is sending several consecutive signals instructing the media player to skip forward to the next track. 
       FIG. 12C  is a detailed shot of the right window in  FIG. 12A . Various electrical, transport, and other information may be shown in this window for error debugging and other purposes. For example, in the electrical window, the state of an accessory detect pin is shown. In an exemplary accessory, this pin is held low such that the media player can detect it. When the media player senses this pin going low, it can determine that it is attached to an accessory. Identification resistors, charging voltages, and other information can be graphically included in this window as well. The serial transport window indicates the data rate and errors associated with the data rate provided by the accessory. Other information, such as accessory identification and authentication, may also be shown. 
       FIG. 13  illustrates sniffer data generated by an accessory validation system when a media player is connected to an accessory via the accessory validation system hardware. In the first line, the media player is detected, while the application of power to the media player is detected in the second line. 
       FIG. 14  illustrates real-time or stored sniffer data indicating that the accessory has been disconnected. This information may be provided as the accessory is disconnected, or as a stored data stream that can be used to determine when the accessory was disconnected. 
       FIG. 15  illustrates a test summary window that may be provided via a user interface according to an embodiment of the present invention. Again, after testing is at least partially completed, results may be provided to the user via the user interface. 
     If an error occurs, such as the error shown here, the line showing the error may be selected. This causes the software to provide to the user interface the specific sniffer data associated with the error. This error data can be shown in a window such as the window in  FIG. 12A . Typically, it is also useful that data transfers before and after the occurrence of the error may also be provided. 
     The above description of exemplary embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described, and many modifications and variations are possible in light of the teaching above. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated.