Method for providing an integrated video module

Methods include presenting an integrated video module within an application, in which the integrated video module is integrated into the application. Methods include receiving one or more search terms. Methods include identifying, via a search element of the integrated video module, a particular video associated with at least one of the one or more search terms and stored in an accessible repository. Methods include presenting, via the search element, the particular video. Methods also include recording, via a record element of the integrated video module, a video. Methods include storing, via a publish element of the integrated video module, the video and the one or more further search terms in a local repository. Methods include storing, via the publish element, the video and the one or more further search terms in a public repository in response to receiving a request to share the video.

BACKGROUND

The present disclosure relates to computer tutorials and, more specifically, to a system and method for providing an integrated video module.

Existing computing systems may provide a user with a tutorial or help feature. This tutorial feature may be a module that allows the user to view content that is stored locally or remotely. The content may be electronic versions of documents that are in one or more electronic file formats. The user may use these documents to understand how to use an application or an object of the application. The user may also want to use other content such as videos to understand how to use the application, but existing systems may be limited to providing access to the electronic versions of the documents. Moreover, existing systems may not allow the user to make or create new content and to share content.

BRIEF SUMMARY

According to an aspect of the present disclosure, a method may include presenting an integrated video module within an application, in which the integrated video module is integrated into the application. The method may further include receiving one or more search terms. The method may further include identifying, via a search element of the integrated video module, a particular video associated with at least one of the one or more search terms and stored in an accessible repository in response to receiving a request to search for a video. The method may further include presenting, via the search element, the particular video.

According to another aspect of the present disclosure, a method may include receiving one or more further search terms. The method may further include recording, via a record element of the integrated video module, a video in response to receiving a request to record the video. The method may also include associating, via the record element, the video with the one or more further search terms. The method may further include storing, via a publish element of the integrated video module, the video and the one or more further search terms in a local repository. The method may also include storing, via the publish element, the video and the one or more further search terms in a public repository in response to receiving a request to share the video.

Other objects, features, and advantages will be apparent to persons of ordinary skill in the art from the following detailed description and the accompanying drawings.

DETAILED DESCRIPTION

Any combination of one or more computer readable media may be utilized. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would comprise the following: a portable computer diskette, a hard disk, a random access memory (“RAM”), a read-only memory (“ROM”), an erasable programmable read-only memory (“EPROM” or Flash memory), an appropriate optical fiber with a repeater, a portable compact disc read-only memory (“CD-ROM”), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium able to contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.

A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take a variety of forms comprising, but not limited to, electro-magnetic, optical, or a suitable combination thereof. A computer readable signal medium may be a computer readable medium that is not a computer readable storage medium and that is able to communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using an appropriate medium, comprising but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

While certain example systems and methods disclosed herein may be described with reference to mainframes in cloud computing, systems and methods disclosed herein may be related to architecture and information technology (“IT) service and asset management in cloud computing, as well as usability and user experience in middleware and common services. Systems and methods disclosed herein may be applicable to a broad range of applications that monitor various parameters associated with various disciplines, such as, for example, IT systems and other activities of importance to the user.

Referring now to computing systems, existing systems may provide a user with a tutorial or help feature. This tutorial feature may be a module that allows the user to view electronic versions of documents. These electronic versions of documents may be in one or more electronic formats such as, for example, Portable Document Format (“PDF”) or document file format (“DOC”). The user may use the documents to understand how to use an application or an object of an application. Existing systems may only be able to provide these documents to the user. However, in some instances, the user may want to search for and view a recorded guide instead of a document. The recorded guide may be, for example, a video. Moreover, the user may also want to make or create their own recorded guides and/or share their recorded guides with other users.

System and methods disclosed herein may allow the user to search for a video (e.g., via a search element of an integrated video module), to record their own video (e.g., via a record element of an integrated video module), and to share their video (e.g., via a publish element of an integrated video module) with other users. Such systems and methods may provide an integrated video module. The integrated video module may be integrated into an application. Such systems and methods may present, within the integrated video module, the user with an option to search for one or more videos. Such systems and methods may also present, within the integrated video module, the user with an option to record a video and an option to share the video. Each of these videos may have a name or header and one or more key phrases that describe the video's subject matter. For example, a video that encompasses subject matter on how to migrate datasets may have a header, “How to Migrate a Dataset,” and a set of key phrases comprising “Dataset,” a description of a task (e.g., migration), a name of a tool that is used for migrating a dataset, and a reason for performing the task (e.g., to free up hard drive space). The header and the one or more key phrases may be used to search for the videos. Moreover, each of these videos may be associated with a name of an object in the application. For example, continuing from the last example, the video may be associated with a name of an object in the application that is used for migrating a dataset or a name of an object in the application that is a part of a structure or tree for migrating a dataset. If the video is associated with a name of an object, then such systems and methods may identify the video as a video that is related to the object. In such cases, the video may be referred to as a “related video.” Such systems and methods may also provide an option to display the related video to the user. For example, such systems and methods may display a button with the option to display the related video next to the object on a screen, and the user may select the option by clicking on the button with a cursor. When the user selects the option to view the related video, such systems and methods may further present the related video to the user.

In such systems and methods disclosed herein, there may be three types of videos. A video may be a factory video, wherein the factory video is a video that is provided by a service provider (e.g., a manufacturer, a distributor, a licensor). For example, a company that develops an application with a plurality of objects may provide videos for each of the plurality of objects in the application. These videos may comprise recorded data that instructs a user on one or more actions that can be performed or implemented with each of the plurality of objects. Alternatively, a video may be a private video, wherein the private video is a video that is recorded or made by a user and stored in a local repository. The local repository may be a memory located in a device that the user is using to execute or run the application. For example, continuing from the last example, a customer who purchases the application may record one or more additional videos for their private use. These one or more additional videos may be stored in a hard drive on a computer that the user is running the application on. The user may be an experienced engineer who is recording the one or more additional videos to instruct a beginning user on how to perform a task in the application. Additionally, a video may be a public or shared video, wherein the public video is a video that is recorded or made by a user and stored in a public repository. The public repository may be a memory that is accessible by a group of users that are running the application on different devices. The user that records the video may want to make the video a shared video so that the video can share information and knowledge with many users.

When a user chooses to search for a video, such systems and methods may search among the videos that are stored in one or more repositories that are accessible to that user. These one or more repositories may be referred to as “accessible repositories.” The accessible repositories may include one or more local repositories (e.g., a disc storage that stores factory videos, a computer hard drive that stores private videos) and one or more public repositories (e.g., a company server, a cloud storage). The search may comprise finding or identifying one or more videos that are associated with one or more search terms. The one or more search terms may comprise a header, key phrases, and names of objects.

Systems and methods disclosed herein may provide an interactive way for users to share and obtain information about an application's features. Unlike existing systems and methods that only provide access to written content, such systems and methods may provide users with recorded content. The recorded content may comprise video data such as images and audio clips. By viewing the recorded content, users may learn how to perform a task in the application or how to use a feature in the application. Additionally, users can create their own recorded content. For example, experienced engineers can create a video for a beginner engineer in a field. Moreover, after such recorded content is created and stored, it can be used by future generations of users. Service providers that notice that particular recorded content is useful may also include such content as a factory video in a next release of the application.

Furthermore, in some systems and methods, a small change associated with an application may not reduce the usefulness of existing recorded content. Such systems and methods may also provide an efficient way for new recorded content to replace existing recorded content if the application undergoes a significant change. For applications that have a consolidated user interface (i.e., a user interface that is used in a plurality of applications), such systems and methods may also enable the user to quickly learn about using many applications or particular features in many applications.

Referring now toFIG. 1, a network1for a user to access and use an integrated video module. Network1may comprise one or more clouds2, which may be public clouds, private clouds, or community clouds. Each cloud2may permit the exchange of information and services among users that are connected to such clouds2. In certain configurations, cloud2may be a wide area network, such as the Internet. In some configurations, cloud2may be a local area network, such as an intranet. Further, cloud2may be a closed, private network in certain configurations, and cloud2may be an open network in other configurations. Cloud2may facilitate wired or wireless communications of information among users that are connected to cloud2.

Network1may comprise one or more servers3and other devices operated by service providers and users. Network1also may comprise one or more devices4utilized by users. Service providers and users may provide information to each other utilizing the one or more servers3, which connect to the one or more devices4via cloud2. Servers3may comprise, for example, one or more of general purpose computing devices, specialized computing devices, mainframe devices, wired devices, wireless devices, monitoring devices, infrastructure devices, and other devices configured to provide information to service providers and users. Devices4may comprise, for example, one or more of general purpose computing devices, specialized computing devices, mobile devices, wired devices, wireless devices, passive devices, routers, switches, mainframe devices, monitoring devices, infrastructure devices, and other devices utilized by service providers and users. Exemplary items may include network1, cloud2, servers3, and devices4.

Moreover, network1may comprise one or more systems100that may provide an integrated video module. System100may be, for example, one or more of a general purpose computing device, a specialized computing device, a wired device, a wireless device, a mainframe device, an infrastructure device, a monitoring device, and any other device configured to provide an integrated video module. System100may also be configured to collect data from one or more data sources (e.g., servers, sensors, networks, interfaces, other devices). System100may collect information from network1, cloud2, servers3, devices4, and other devices connected to cloud2. System100may connect to cloud2and monitor network1, cloud2, servers3, devices4, and other devices connected to cloud2for available information. The available information may be user information, access information, performance information, infrastructure information, software or application information, usability information, and other information provided by service providers and users. By collecting the available information from network1, cloud2, servers3, devices4, and other devices connected to cloud2, system100may perform one or more tasks associated with using the integrated video module. These one or more tasks may comprise searching for a video.

In some configurations, one or more of servers3and devices4may comprise system100. In other configurations, system100may be separate from servers3and devices4.

Referring now toFIGS. 2 and 3, system100, which may provide an integrated video module, is now described. System100may reside on one or more networks1. System100may comprise a memory101, a central processing unit (“CPU”)102, and an input and output (“I/O”) device103. Memory101may store computer-readable instructions that may instruct system100to perform certain processes. In particular, when executed by CPU102, the computer-readable instructions stored in memory101may instruct CPU102to operate as one or more devices. InFIG. 2, CPU102may operate as one or more of a module presenting device104, an option presenting device105, a video searching device106, a video recording device107, and a video sharing device108. Searching device106may comprise a first message transmitting device109, a first search term receiving device110, a video identifying device111, a ranking device112, and a video presenting device113. Recording device107may comprise a second message transmitting device115, a second search term receiving device116, a recording device117, and an association device118. Video sharing device108may comprise a repository presenting device119and a storing device120.

InFIG. 3, system100may operate as one or more of a module presenting device104, an option presenting device105, a video searching device106, and a related video device121. Related video device121may comprise a related video identifying device122, a providing device123, and a related video presenting device124.

In certain configurations, CPU102may only operate as module presenting device104, option presenting device105, and video searching device106. In other configurations, CPU102may only operate as module presenting device104, option presenting device105, and video recording device107. In still other configurations, CPU102may only operate as module presenting device104, option presenting device105, video recording device107, and video sharing device108. In particular configurations, CPU102may only operate as module presenting device104, option presenting device105, video searching device106, and video recording device107. In other configurations, CPU102may operate as any of the above combinations in addition to related video device121. In particular configurations, searching device106may not comprise ranking device112. In other configurations, sharing device108may not comprise repository presenting device119. In still other configurations, one or more of module presenting device104, option presenting device105, video searching device106, video recording device107, and video sharing device108may be implemented on one or more different CPUs, which may be comprised in devices4or other devices.

I/O device103may receive one or more of data from networks1, data from other devices and sensors connected to system100, and input from a user and provide such information to CPU102. I/O device103may transmit data to networks1, may transmit data to other devices connected to system100, and may transmit information to a user (e.g., display the information, send an e-mail, make a sound). Further, I/O device103may implement one or more of wireless and wired communication between system100and other devices.

Referring now toFIG. 4-8, processes performed by module presenting device104, option presenting device105, video searching device106, video recording device107, video sharing device108, and related video device121now are described.FIG. 4depicts a process of presenting, within an application, an integrated video module and presenting options to search for videos (e.g., via a search element of an integrated video module), to record a video (e.g., via a record element of an integrated video module), and to share a video (e.g., via a publish element of an integrated video module). In S101, module presenting device104may present, within an application, an integrated video module. The integrated video module may be integrated into the application. The application may be computer software that allows a user to perform one or more actions. The user may be running the application on a device. The application may comprise one or more objects. The one or more objects may be important elements of the application. In S102, option presenting device105may present an option to search for a first video. Presenting the option to search for a first video may comprise, for example, displaying a notification that asks the user whether he would like to search for a first video. When the option to search for a first video is selected (S103: YES), then the process may proceed to S104, and video searching device106, operating as first message transmitting device109, first search term receiving device110, video identifying device111, ranking device112, and video presenting device113, may search for a first video. Video searching device106may be a search element of the integrated video module. Selecting the option to search for the first video may generate a request to search for a video; thus, when the option to search is selected, video searching device106may receive a request to search for a video. In S104, video searching device106may transmit a message. The message may ask the user for one or more search terms that correspond to the first video. Video searching device106may receive the one or more search terms from the user and use the one or more search terms to identify one or more videos. The one or more videos may be videos that are each associated with at least one of the one or more search terms. Video searching device106may then present the one or more videos to the user.FIG. 6, described below, provides a more detailed view of S104.

When the option to search for a first video is not selected (S103: NO), then the process may proceed to S105. In S105, option presenting device105may present an option to record a second video. Similar to presenting the option to search for a first video, presenting the option to record a second video may comprise, for example, displaying a notification that asks the user whether he would like to record a second video. When the option to record a second video is selected (S106: YES), then the process may proceed to S107, and video recording device107, operating as second message transmitting device115, second search term receiving device116, recording device117, and association device118, may record a second video. Video recording device107may be a record element of the integrated video module. Selecting the option to record the second video may generate a request to record the second video; thus, when the option to record is selected, video recording device107may receive a request to record the second video. When the option to record a second video is not selected (S106: NO), then the process may terminate. In S107, video recording device107may transmit a message. The message may ask the user for one or more search terms that correspond to the second video. These one or more search terms may be referred to as “one or more further search terms.” Video recording device107may receive the one or more further search terms from the user. Video recording device107may then record the second video and associate the second video with the one or more further search terms.FIG. 7, described below, provides a more detailed view of S107.

In S108, option presenting device105may present an option to share the second video. Similar to presenting the options above, presenting the option to share the second video may comprise, for example, displaying a notification that asks the user whether he would like to share the second video. When the option to share the second video is selected (S109: YES), then the process may proceed to S110, and video sharing device108, operating as repository presenting device119and storing device120, may share the second video. Video sharing device108may be a publish element of the integrated video module. Selecting the option to share the second video may generate a request to share the second video; thus, when the option to share is selected, video sharing device108may receive a request to share the second video. In S110, video sharing device108may present one or more public repositories to the user. As described above, the one or more public repositories may comprise a physical or a logical memory that is accessible by a group of users that are running the application on different devices. The one or more public repositories may be located on the device that is running the application. Alternatively, the one or more public repositories may be located on a remote device. Examples of a public repository include a remote server and online storage. The user may select one of the one or more public repositories to store the second video in. After the user makes a selection, video sharing device108may store the second video and the search terms in the selected public repository.FIG. 8, described below, provides a more detailed view of S110.

When the option to share the second video is not selected (S109: NO), then the process may proceed to S111. In S111, sharing device108may store the second video and the one or more search terms in a local repository. The local repository may be a physical or a logical memory that is only accessible by the user. The local repository may be directly connected to the device that the user is using to run the application. Examples of a local repository include a hard drive on the device that is running the application and a memory card connected to such device. After the second video and the one or more search terms are stored, then the process may terminate.

In certain configurations, S102/S103and S105/S106may be performed concurrently. Option presenting device104may present an option to search for a first video and an option to record a second video at the same time, and the user may select either option. If the user selects the option to search for a first video (S103: YES), then the process may proceed to S104. Alternatively, if the user selects the option to record a second video (S106: YES), then the process may proceed to S107. In other configurations, S105through S11may be performed before S102through S104. In particular configurations, S108through S110may be omitted and the process may proceed from S107to S111. In other configurations, S108through S110may be performed again after S111. Option presenting device104may present an option to share the second video to the user again. In such configurations, the second video may already be stored in a local repository or one or more public repositories. The user may select the option to share the second video again because the user would like to store the second video in a different local or public repository. In other configurations, S105through S111may be omitted, and the process may terminate after S104. In still other configurations, S102through S104may be omitted, and the process may proceed from S101to S105. In such configurations, S108through S110may be omitted and the process may proceed from S107to S11.

Referring now toFIG. 5, a process of presenting, within an application, an integrated video module, presenting an option to search for videos, identifying a related video for each object of the application, and providing an option to view the related video for each object, now is described. As described above, in S101-S104, module presenting device104may present, within the application, an integrated video module, option presenting device105may present an option to search for a first video, and video searching device106may search for a first video when the option to search for a first video is selected. In S112-S117, related video device121, operating as related video identifying device122, providing device123, and related video presenting device124, may identify a related video for each object in the application, provide an option to view the related video for each object, and present the related video for a particular object to the user when he selects the option to view the related video for that object. Related video device121may be an object help element of the integrated video module. As described above, an object may be an important element of the application (e.g., a window, a menu, a toolbar, a control). In S112, related video identifying device122may select a first object. In S113, related video identifying device122may identify a related video for the first object. The related video may be stored in an accessible repository. The accessible repository may be a memory that the user can currently access on the device that is running the application. The accessible repository may comprise a local repository or a public repository. The related video may be a video that is associated with a search term, wherein the search term is the object's name or a similar name that corresponds to the object.

In S114, providing device123may provide an option to view the related video. Providing the option to view the related video may comprise displaying a button or an icon. For example, if the object is a window, providing device123may display a button with the text “View Video Associated with Window” or display a question mark icon on the window's title bar. The user may then select the option to view the related video by clicking on the button or the icon. If the user selects the option to view the related video (S115: YES), then the process may proceed to S116, and related video presenting device123may present the related video. Selecting the option to view the related video may generate a request to view the related video; thus, if the user selects the option to view, then related video presenting device123may receive a request to view the related video. If the user does not select the option to view the related video (S115: NO), then the process may proceed to S117. Presenting the related video may comprise playing the related video on a display. Alternatively, presenting the related video may comprise displaying a name or header associated with the related video. The display may be a display connected to the device that is running the application. In S117, related video identifying device122may then determine whether the application has additional objects. Determining whether the application has additional objects may comprise referencing a predefined list of objects. The predefined list may comprise objects that are specific to the application, general objects (i.e., objects that may exist in many applications), or both. Objects may be added to the predefined list by the user, another user, or another party (e.g., a service provider).

If related video identifying device122determines that there are additional objects (S117: YES), then the process may proceed back to S112. The process may then repeat S112through S117until related video identifying device122determines that the application has no additional objects. If related video identifying device122determines that there are no additional objects (S117: NO), then the process may terminate.

In certain configurations, the process depicted inFIG. 5may also include S105through S111. In such configurations, S105through S111may be performed before S102, after S104and before S112, or after S117. Moreover, in such configurations, S112through S117may be performed before, during, or after any of the other steps (i.e., S101-S111).

Referring now toFIG. 6, which provides a detailed view of S104, video searching device106, operating as first message transmitting device109, first search term receiving device110, video identifying device111, ranking device112, and video presenting device113, may search for a first video. In S201, first message transmitting device109may transmit a message to the user. The message may ask for one or more search terms corresponding to the first video. In S202, first search term receiving device110may receive the one or more search terms from the user. The one or more search terms may comprise one or more headers, key phrases, and names of objects. A header may be a name or title that is associated with the first video. A key phrase may be a word or phrase that describes useful information related to the first video (e.g., a name of a tool that is used in the first video, a description of a task that is performed in the first video and a reason for performing the task). A name of an object may correspond to an object in the application that is related to the first video (e.g., an object that is used in the first video, an object that is described in the first video). For example, if an user wants to search for a first video that includes information on how to migrate datasets in the application, the user may provide first search term receiving device110with a header “How to Migrate a Dataset,” key words such as “Dataset” and “Migration,” and a name of an object that is used for migrating a dataset.

In S203, video identifying device111may identify a plurality of videos. The plurality of videos may be a plurality of distinct videos, wherein each of the plurality of distinct videos is different from one another. Each of the plurality of videos may be stored in an accessible repository and may be associated with at least one of the one or more search terms. As described above, the accessible repository may be a memory that the user can currently access on the device that is running the application. The accessible repository may comprise a local repository or a public repository. The local repository may be a physical or a logical memory that is only accessible by the user, and the public repository may comprise a physical or a logical memory that is accessible by a group of users that are running the application on different devices. In S205and S206, ranking device112may then retrieve a predetermined scheme and rank the plurality of videos based on the predetermined scheme. The predetermined scheme may be referred to as a “ranking scheme.” The ranking scheme may comprise, for example, an expected relevance ranking, an alphabetical ordering, and a ranking tied to user information (e.g., highest user ratings, highest user views, last viewed or accessed date). After the plurality of videos is ranked, video presenting device113may then present the plurality of videos to the user in S206. Presenting the plurality of videos may comprise, for example, displaying a list of the ranked videos on a display such as a mobile phone, a tablet computer, a laptop computer, a desktop computer, an audio receiving system, a television, or another type of terminal device configured to display video data or play audio data. Displaying a list of the ranked videos may comprise displaying, for each of the ranked videos, a header that is associated with that video in the list. Alternatively, presenting the plurality of videos may comprise playing each of the ranked videos or a subset of the ranked videos (e.g., videos with the highest few rankings) on a display, one after another in the order that they are ranked, to the user.

In certain configurations, video identifying device111may only identify a particular video. In such configurations, S204and S205may be omitted, and video presenting device113may present the particular video in S206. Similar to the process depicted inFIG. 6, presenting the particular video may comprise at least one of displaying a header associated with the particular video and playing the particular video on a display.

Referring now toFIG. 7, which provides a detailed view of S107, video recording device107, operating as second message transmitting device115, second search term receiving device116, recording device117, and association device118, may record a second video. In S301, second message transmitting device115may transmit a message to the user. The message may ask for one or more search terms corresponding to the second video. In S302, second search term receiving device116may receive the one or more search terms from the user. The one or more search terms may comprise one or more headers, key phrases, and names of objects. As described above, a header may be a name or title that describes with the second video; a key phrase may be a word or a phrase that describes useful or important information related to the second video; and a name of an object may correspond to an object in the application that is related to the second video.

In S304and S305, recording device117may record the second video. Specifically, in S304, recording device117may receive video data corresponding to a view of the application. The video data may comprise one or more images and audio clips. In S305, recording device117may organize the video data based on an order that the video data is received. For example, if a first image is received first and a second image is received second, then the two images may be organized as the first image followed by the second image. As another example, if a plurality of images is received at the same time that an audio clip is received, then the plurality of images and the audio clip may be organized together. In S306, association device118may then associate the second video with the one or more search terms. For example, association device118may add metadata to the second video, wherein the metadata comprises the one or more search terms.

Referring now toFIG. 8, which provides a detailed view of S110, video sharing device107, operating as repository presenting device119and storing device120, may share the second video. In S401, repository presenting device119may present one or more public repositories to store the second video in. As described above, the one or more public repositories may comprise a physical or a logical memory that is accessible by a group of users that are running the application on different devices. The one or more public repositories may be located on the device that is running the application. Alternatively, the one or more public repositories may be located on a remote device. In S402, the user may select one of the one or more public repositories to store the second video in. Storing device120may receive the user's public repository selection. In S403, storing device120may then store the second video and the one or more search terms in the selected public repository.

The corresponding structures, materials, acts, and equivalents of means or step plus function elements in the claims below are intended to comprise any disclosed structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure. For example, this disclosure comprises possible combinations of the various elements and features disclosed herein, and the particular elements and features presented in the claims and disclosed above may be combined with each other in other ways within the scope of the application, such that the application should be recognized as also directed to other embodiments comprising other possible combinations. The aspects of the disclosure herein were chosen and described in order to best explain the principles of the disclosure and the practical application and to enable others of ordinary skill in the art to understand the disclosure with various modifications as are suited to the particular use contemplated.