Sharing form training result utilizing a social network

A mechanism is provided for sharing form data by users of a social network. A first value input for a first label by a first user is received. The first label is associated with a tag in a mapping table. The first value is associated with the tag in a first user table. The first value is recognized as input for a different label than the first label. The different label is associated with the tag in mapping table. A second value is received that is input for a second label by a second user. The second label is associated with the tag in the mapping table. The second value is associated with the tag in a second user table. The second value is recognized as input for a different label than the second label. The different label than the second label is associated with the tag in mapping table.

BACKGROUND

Exemplary embodiments relate to automatic fill-in of forms, and more specifically, to form training data (result) that can be utilized to automatically fill in forms.

In one conventional example, a client side program code examines electronic documents such as web pages and automatically fills out fields of forms contained in the document with the appropriate data from a user profile, without requiring prior mapping or examination of the form. The application maps user data to the appropriate form field by examining label text on the form as the user sees it, i.e., text that is visually nearest the field. For fields lacking labels, the application examines the field context to determine the required data. To enter the information in the correct format, the application parses visual hints concerning, for example, the date format provided to the user and formats the data accordingly. In the absence of any usable visual cues or contextual information, the program code parses the form's underlying markup code.

BRIEF SUMMARY

According to one exemplary embodiment, a method implemented on a computer is provided for sharing form data by users of a social network. The computer receives a first value that is input for a first label by a first user and associates the first label with a tag in a mapping table. The computer associates the first value with the tag in a first user table (also referred to herein as a user profile) and recognizes the first value is input for a different label than the first label by the first user. In response to recognizing that the first value is input for the different label than the first label, the computer associates the different label with the tag in the mapping table. The computer receives a second value that is input for a second label by a second user. The computer associates the second label with the tag in the mapping table and associates the second value with the tag in a second user table. The computer recognizes the second value is input for a different label than the second label by the second user. In response to recognizing that the second value is input for the different label than the second label, the computer associates the different label than the second label with the tag in the mapping table.

According to one exemplary embodiment, a system is provided for sharing form data by users of a social network. The system includes an application on a computer and a mapping table. For each member of a social network, the application is configured to execute a following process. When a user inputs a value, the value is associated with a tag in a user profile. In response to searching the user profile for the value and finding the tag associated with the value, each time the value is subsequently recognized as being input by the user, a corresponding label in a document in which the value is input is mapped to the tag in the mapping table.

Additional features are realized through the techniques of the present disclosure. Other systems, methods, apparatus, and/or computer program products according to other embodiments are described in detail herein and are considered a part of the claimed invention. For a better understanding of exemplary embodiments and features, refer to the description and to the drawings.

DETAILED DESCRIPTION

Existing automatic form filling solutions attempt to determine the meaning of the fields within a form by, for example, a dictionary lookup that maps contextual information (e.g., field labels) to predefined tags. New assignments have to be updated to the dictionary. Also, in existing automatic filling solutions, manual training assigns a predefined tag to each field of a form, and new assignments are updated to the system. However, the new assignments are visible and usable to only the user/organization who created them. Also, the frequency of such new assignments might not happen fast enough to keep pace with the fast changes of, e.g., Internet forms.

In addition, in a globalized e-commence environment, it is not uncommon to have forms in different languages with similar contextual information, and the fore-mentioned issue requires personnel with multi-lingual skills and requires additional investment for each language.

Exemplary embodiments provide a mechanism that involves sharing the form training result (data) across a social network (such as the Internet), where users in the network will train the training forms and the training result will be made available to the other users within the social network. The population and activities of the social network ensure the training forms are up-to-date (in a short time period). In addition, a training form can be in different languages and have equivalent fields, and exemplary embodiments can input the same value into the equivalent fields. The wide audience of the social network based training allows the forms in different languages to map to a single tag.

Now turning toFIG. 1,FIG. 1illustrates a block diagram100in accordance with exemplary embodiments.

The diagram100includes a centralized server10, host servers85which represent various computing devices that host websites, computer20, and various computers70operatively connected to a network30. The centralized server10, host servers85(details not illustrated for clarity), computer20, and various computers70(details not illustrated for clarity) may each include and/or be coupled to a communication interface40, display45, user interfaces50, processors60, memory, and software.

The communication interface40comprises hardware and software for communicating over the network30. The user interfaces50may include, e.g., a track ball, mouse, pointing device, keyboard, etc.

The centralized server10includes memory15which may be a computer readable storage medium. One or more applications105may reside on or be coupled to the memory15, and the application105comprises logic and software components to operate and function in accordance with exemplary embodiments in the form of computer executable instructions. One or more databases115include user profiles130.

The computer20includes memory25, which may be a computer readable storage medium, and an application105amay reside on or be coupled to the memory25. The application105acomprises logic and software components to operate and function in accordance with exemplary embodiments in the form of computer executable instructions. The computer20includes one or more databases115asimilar to the database115. The database115aincludes a user profile130not shown in the database115because the user profile130contains personal information of the user. Although not shown, it is contemplated that the database115of the centralized server10may include the user profile130if so desired by the user.

A remote device21includes memory27, which may be a computer readable storage medium, and an application105bmay reside on or be coupled to the memory27. The application105bcomprises logic and software components to operate and function in accordance with exemplary embodiments in the form of computer executable instructions. The remote device21includes one or more databases115bsimilar to the database115on the centralized server10.

The centralized servers10are configured to maintain a predefined set of tags as predefined tags140, such as First Name, Last Name, Street Address, etc., in the database115. Also, the database115may include training forms150, and the data fields of the training form150are associated with the predefined tags140. For example, a label in a data field of the training form150is mapped to a predefined tag140, and a value input for the label is mapped to the predefined tag140as discussed further in the disclosure.

In the present disclosure, the term “application105” is utilized to refer to the applications105,105a, and105b, and when a distinction is meant between the applications105,105a, and105b, the application105aor105bwill be indentified individually to show that applications105aand105bcan be utilized on a specific person's local computer without having to connect to the centralized server10. Anytime the term “application105” is utilized, it is understood that the functionality can apply specifically to the application105on the centralized server10. The term “predefined tags140” is utilized to refer to the predefined tags140, predefined tags140a, and predefined tags140b, and when a distinction is meant between the predefined tags140,140a, and140b, the predefined tags140aor140bwill be indentified individually to show that the predefined tags140aand140bcan be utilized on a specific person's local computer without having to connect to the centralized server10. Anytime the term “predefined tags140” is utilized, it is understood that the functionality can specifically apply to the predefined tags140on the centralized server10. The term “mapping table145” is utilized to refer to the mapping table145, mapping table145a, and mapping table145b, and when a distinction is meant between the mapping table145,145a, and145b, the mapping table145aor145bwill be indentified individually to show that the mapping table145aand145bcan be utilized on a specific person's local computer without having to connect to the centralized server10. Anytime the term “mapping table145” is utilized, it is understood that the functionality can specifically apply to the mapping table145on the centralized server10. The term “training form150” is utilized to refer to the training form150, training form150a, and training form150b, and when a distinction is meant between the training form150,150a, and150b, the training form150aor150bwill be indentified individually to show that the training form150can be utilized on a specific person's local computer without having to connect to the centralized server10. Anytime the term “training form150” is utilized, it is understood that the functionality can specifically apply to the training form150on the centralized server10.

The application105aon the user computer20is operative to be responsible for form training of the training form150and for initializing the user profile130. Also, the application105on the centralized server10and/or the application105bis operative to be responsible for form training of the training forms150. For illustration purposes, the various computers70may be identical to the computer20but represent many different users. Also, the computer20may be representative of numerous different users but is shown as the single computer20.

The application105of the centralized server10is configured to receive data from many different training forms150and other forms (which are not the training forms150but are electronic forms) that require data input, and the data is input by different users of the computers20and70utilizing, e.g., the user interface50.

In accordance with exemplary embodiments, the application105is configured to provide the training forms150to the users of the computers20and70via, e.g., a website hosted by the centralized server10. The user of computers20and70input their data (values) into fields of the training forms150and training data is stored in the database115by the application105. For each field, the training forms150have a label, such as “last name”, and the user (of computers20and70) can input the value such as “Smith” for her last name. The application105analyzes data input for each field of the training form150, and stores the data in the database115. For the training form150, the application105may previously assign a predefined tag140to the label and to the corresponding empty value before the user inputs data into the empty value. The value is an empty value because the user (of computers20and70) has not input the value “Smith” for her last name in the form150. Additionally and/or alternatively, the application105may assign the predefined tag140to the label and the corresponding value after the user (of computers20and70) inputs “Smith” as the value for her last name in the form150.

For the training form150(and any form), the application105is configured to assign the predefined tag140to the label “last name” in a mapping table145. In the mapping table145, the same predefined tag140may be assigned to multiple different labels based on the training data (training result) from many different users (of computers20and70) who input data (values) into the forms150(and other forms). In addition to assigning the predefined tag140to the multiple different labels in the mapping table145, the application105is configured to assign the same predefined tag140to the value “Smith” in the user profile130for that particular user. In exemplary embodiments, each user has his own user profile130that has values (such as “Smith”) assigned to predetermined tags140. Each individual user profile of the users is stored in the user profiles130in the database115. By parsing the user profile130, the mapping table145, and the training form150(and other forms), the application105is configured to analyze whether, e.g., a user has input the same value such as “Smith” into data fields corresponding to different labels such as “last name”, “family name”, and/or “surname”. Accordingly, the application105is configured to assign the same predefined tag140to each label “last name”, “family name”, and “surname” in the mapping table145, and the mapping table145illustrates that the same predefined tag140can be assigned to different labels inFIG. 2based on the application105recognizing that users respectively input the same value (such as “Smith” for one user) for different labels meaning input your last name. Also, the same predefined tag140is assigned to the value “Smith” in the user profile130for that particular user. Each user has her own user profile which is represented as user profile130on computers20(and understood to be on computer70but not shown for clarity). Additionally and/or alternatively, although not shown, any user could also have her user profile130securely stored on the centralized server10along with the computers20and70, and/or in place of the computers20and70.

If the user is filling out a different form (that is not one of the training forms150of the centralized server10) on a website80hosted by the host server85, the application105(105a) (stored on the user's computer20and/or accessed on the centralized server10) is configured to analyze the fields of the different form, the labels, the values input by the user, and the underlying code of the different form. The application105amay be utilized when, e.g., access to the application105is unavailable such as during a network30failure and/or when there is no Internet access. Although the term “application105” can generally refer to application105of the centralize server10, application105aof the computer20, and application105bof the remote device21, application105ais indentified below at times to make clear that the process can be (completely) done locally. Although not shown, the computer20may download a local copy of the mapping table145for storage in the database120. Now returning to the example, the application105(105a) is configured to scan the code of the different form and to scan the displayed terms (e.g., labels) of the different form as the user inputs values (data). If the application105(105a) determines that the user has input a value previously stored in, e.g., the user profile130(for the particular user), the application (105)105aidentifies the corresponding predefined tag140in the user profile130. By scanning (parsing) the different form, the application105(105a) locates the label that corresponds to the value input by the user, and the application105(105a) assigns that corresponding label to the same predefined tag140(that was identified in the user profile130) in the mapping table145(e.g., the local copy of the mapping table in database120of the computer120). For example, if the different form had the label “cognomen” and the user input the value “Smith”, the application105(105a) would recognize the value “Smith” (by searching for the value “Smith” in the user profile130) and locate its related predefined tag140in the user profile130. After mapping “cognomen” to the predefined tag140in the local mapping table, the application105awould communicate (synchronize) with the application105to add “cognomen” as one of the (new) labels for the particular predefined tag140in the mapping table145. Additionally, if the application105maps “cognomen” to the predefined tag140, there would be no need to synchronize the local copy of the mapping table stored in database120to the mapping table145stored in the database115. Therefore, in the mapping table145, the same predefined tag140would now be assigned to the following labels “cognomen”, “last name”, “surname”, and “family name”, e.g., as assigned to tag3the mapping table145illustrated inFIG. 2. As the different users (of the computers20and70) continue to utilize the various training forms150and various different forms (which can be any form requiring data to be input), the application105continues to make associations that will increase the amount of labels assigned to each predefined tag140. Consequently, by constantly increasing the labels associated with predefined tags140in the mapping table145, the ability of the application105to recognize new labels when automatically inserting values (from respective user profiles130) to fill in forms for users is increased.

Moreover, via the application105, the mapping table145is configured to benefit from the numerous users who continuously update the labels (to predefined tag140relationships) of the mapping table145, such that a single predefined tag140may have numerous associated labels in the mapping table145in accordance with exemplary embodiments. The mapping table145may be considered as a master mapping table145, and the users of the social network update (or it is possible to update) the mapping table145each time they input values in the training forms150and in the different forms (which are not the training forms150). Also, in exemplary embodiments, the application105may be configured to determine that a certain percentage of users have input the correct value for a corresponding new label before the application105assigns the corresponding new label to the predefined tag140in the mapping table145. So, for example, although one user may input “Smith” as the value for the label “cognomen”, the application105may not immediately associate “cognomen” with the predefined tag140(in the mapping table145) because the application105may wait until a threshold of other users (in the social network) have input their respective last name as the value for the label “cognomen”. Also, the label “cognomen” may be automatically added by the application105to one of the training forms150, and when the application105determines that the other users (a predetermined percentage) have input the value for their corresponding last name to the label “cognomen”, the application105then (officially) assigns “cognomen” as a label to the predefined tag140.

As discussed herein, the users of the different computers20and70who input (values) data that can be utilized to expand the mapping table145may, e.g., be part of a social network. The population and activities of the social network ensure the training forms150are up-to-date (in a short time period). In addition, a training form150can be in different languages and have equivalent fields (as another language), and the application105can input the same value (during automatic fill-in of form) into the equivalent fields. By utilizing the application105, the wide audience of the social network based training allows the (labels of) forms in different languages to map to a single predefined tag140. Because users have input the same value for equivalent labels of different languages, the application105is configured to add the equivalent labels of the different languages to the same predefined tag140. Accordingly, when the application105parses a form and recognizes a (foreign) label for last name (in any language), the application105is configured to locate the predefined tag140corresponding to that foreign label in the mapping table145, which allows the application105to locate the corresponding value in the user profile130for the last name, e.g., “Smith” regardless of the language of the label; the application105can then automatically input the value “Smith” in the field having the foreign label that corresponds to last name.

Now turning toFIG. 3,FIG. 3illustrates an example of forms in accordance with exemplary embodiments. Although forms300,301, and303are illustrated with a single data field302,312, and322for explanation purposes, it is understood that the forms300,301, and303include numerous data fields.

There are many different scenarios of exemplary embodiments that can be illustrated withFIG. 3. In one scenario, the forms300,301, and303are training forms150in accordance with exemplary embodiments, in another scenario the forms300,301, and303may be forms other than the training forms150, and in a third scenario the forms300,301, and303may be a combination of both training forms150and other forms (that are not training forms150). In other words, exemplary embodiments can apply and function for any type of electronic form, and the present disclosure is not meant to be limited to a particular type of form.

Form300represents an example form1, which may be both a training form1and/or any form1that is not the training form150. Likewise, the forms301and303are examples of forms2and3respectively which may be both training forms1and2and/or any forms1and2which are not training forms150.

Form1includes field302(among other fields not shown). Field302has a label304which is “Family Name”. If the user of the computer20is inputting data for the form1, the label304of Family Name is displayed to the user on the display45. When the user sees the label304displaying Family Name on the display45, the user of the computer20can input the value306which is “Smith” in the box308via the user interface50(e.g., keyboard). When no value306(such as “Smith”) is input in the box308, the box308(and boxes318and328) may be considered an empty value as discussed herein. The field302and its contents are associated with a particular predefined tag140of the predefined tags140. Utilizing the application105, the field302and its contents may be pre-assigned to the predefined tags140for training forms150and may be assigned while the form1(or forms2and3) is being analyzed for forms other than the training forms150. In either case, the application105associates the tag140with the value306(which is “Smith”) in the user profile130and the tag140with the label304(which is Family Name) in the mapping table145. Referring toFIG. 2, the mapping (association by the application105) of the tag140to the label304is illustrated with reference to tag3of the predefined tags140in the mapping145.

Form2includes field312(among other fields not shown). Field312has a label314which is “Last Name”. If the user of the computer20is inputting data for the form2, the label314of Last Name is displayed to the user on the display45. When the user sees the label314displaying Last Name on the display45, the user of the computer20can input the value316which is also “Smith” in the box318via the user interface50(e.g., keyboard). The field312and its contents are associated with a particular predefined tag140of the predefined tags140. The application105associates the tag140with the value316(which is “Smith”) in the user profile130and associates the tag140with the label314(which is Last Name) in the mapping table145. Again referring toFIG. 2, the mapping (association by the application105) of the tag140to the label314is illustrated with reference to tag3of the predefined tags140in the mapping145. Just as in form1, the same user has again input the value “Smith”, and the application105is configured to recognize (by searching for a match to the value in the user profile130) the input value316as being the same as the input value306for this user.

Form3includes field322(among other fields not shown). Field322has a label324which is the Korean equivalent for last name which is referred to as “ABC” for explanation purposes. (Korean is used here as an arbitrary example of a foreign language with which the disclosed embodiments can be used; any other foreign language would serve just as well.) If the user of the computer20is inputting data in the form3, the label324of ABC is displayed to the user on the display45. When the user sees the label324displaying ABC (which is the Korean equivalent for last name) on the display45, the user of the computer20can input the value326which is also “Smith” in the box328via the user interface50(e.g., keyboard). The field322and its contents are associated with the particular predefined tag140of the predefined tags140; this association may have been pre-assigned for training forms150and/or presently assigned for other forms (different from the training forms150). The application105associates the tag140with the value326(which is “Smith”) in the user profile130and associates the tag140with the label324(which is ABC) in the mapping table145. Again referring toFIG. 2, the mapping (association by the application105) of the tag140with the label324is illustrated with reference to tag3of the predefined tags140in the mapping145. Just as in forms1and2, the same user has again input the value “Smith”, and the application105is configured to recognize (by searching for a match to the value “Smith” in the user profile130) the input value326as being the same as the input values306and316for this user.

The above process occurs for every user of the social network in accordance with exemplary embodiments, and the culmination of different labels from different forms (both training forms150and other forms) is utilized by the application105to expand the mapping table145.

The example forms1,2, and3(and other forms) may be filled out at different times by different users of the social network. The application105is configured to recognize that each user input the same respective value for different labels, and accordingly the application105maps the label to the same predefined tag140(after determining the predefined tag140from the user profile130). For example, for labels304,314, and324, a user1may input the value X. For labels304,314, and324, a user2may input the value Y. For labels304,314, and324, a user3may input the value Y. Since the data input by users1,2, and3is shared by the application105and since the respective user profiles130for users1,2, and3are shared by the application105, the application105is configured to search for and recognize this pattern. In other words, the application105is configured (with logic) to make the correlation that each user1,2, and3has input the same respective value to correspond to the labels304,314, and324(regardless of whether the data is input in the training form150and/or in a form different from the training form150). As such, the application105assigns each of the labels304,314, and324to the same predefined tag140(that corresponds to the respective values in their respective users profiles130) based on the value input by the users1,2, and3. The predefined tag140may be an alphanumeric term such as 123ABC, and this term (for this particular predefined tag140) is the same in each user profile130for users1,2, and3, although the value (X, Y, and Z) that corresponds to this term is different for each user in their respective user profiles130.

Now referring toFIG. 2,FIG. 2illustrates an example of the predefined tags140, user profile130, and mapping table145in accordance with exemplary embodiments. It is understood that these examples are not meant to be limiting and are only for explanation purposes. The predefined tags140in the database115may include tag1through tag N, which illustrates that the predefined tags140include numerous predefined tags140. Each predefined tag may be an alphanumeric number such as ABC123, and/or the tags may be a term representative of their associated value such as the tag may be last name to correspond to the value of a last name. The predefined tags140may be assigned by the application105, i.e., mapped to labels and values as discussed herein.

InFIG. 2, the user profile130illustrates a user profile table that has a tag assigned to a specific value that has been input in the training forms150and/or other forms, such as the forms300,301, and303. Each tag has a one-to-one relationship with its corresponding value. For example, tag1corresponds to value1a, value1b, and value1c, tag2corresponds to value2a, value2b, value2c, and so forth. Each user can only access his user profile130, and the application105can access each user profile130, e.g., to determine when additional labels should be assigned to the predefined tags140in the mapping table145. For each user, a copy of the user profile130is stored locally (with an option to store the user profile130on the centralized server) so that the application105acan continue to update (and automatically fill in forms) the mapping table145. Also, at the option of the user, a local copy (and/or a portion) of the mapping table145may be stored in the database120on the computer20as mapping table145a, so that the user can continue to update (and automatically fill in forms) the mapping table145while working offline, i.e., not connected to the network30(e.g., the Internet). When access to the network30is again available, the applications105and105acan communicate to synchronize data in the local mapping table and the mapping tables145. The mapping table145astored by the computer20may be reduced in scope according to a selection of user preferences. For example, the mapping table145amay not contain only English (US based) labels but not any foreign labels.

Further, the application105is configured to initialize the user profile130such as when the user utilizes his user profile130for the first time. For example, the application105is configured to download the predefined tags140for the user profile130. The application105receives an input value by the user to respectively correspond to each of the downloaded predefined tags140, and the application105stores the tag to value (tag1to value 1, tag2to value 2 . . . tag N to value N) relationships in the user profile130of the database115as shown inFIG. 2. For example, the user may fill in the training form150, and once (as) the user fills in the values for the predefined tags140, the application130learns the values and generates the tag to value mapping for the user profile130. When the application105is automatically filling in forms for the user, the application105downloads user profile130, if the corresponding predefined tag140is defined in the user profile130, the application105automatically (by recognizing the labels of the forms) fills in the form and/or allows the user to choose value 1, value 2, value 2 (such as the values shown in the box406ofFIG. 4) to fill in the form. If the value of the corresponding predefined tag140is not defined in the user profile130, the application105asks the user to fill in the information for the field. Also, the application105then captures the value and stores it in the user profile130.

InFIG. 2, the mapping table145illustrates the mapping of the predefined tags140to its corresponding labels (by the application105). For example, tag1is assigned to label A, label B, and label C. Tag2is assigned to label D, label, E, and label F. Also, tag3is assigned (by the application105) to the following labels: “family name”, “last name”, Korean equivalent to last name (represented as “ABC”), and “cognomen”. The labels for tag3may be identified from other forms (that are different from the training forms150) when users input values in the different forms, and the application105recognizes that the same value has been input as the value stored in the user profile130for a particular predefined tag140. The application105searches for a match to the input value in the user profile130and locates the corresponding predefined tag140in the user profile130, such as the tag3and the application105assigns the label in the different form to the tag3. As such, if the label in the different form was “cognomen”, the application105scans the different form to find and extract the label “cognomen” because “cognomen” corresponds to the same value (e.g., “Smith” which is assigned to tag3) in the user profile130. Now, the label “cognomen” will be mapped (assigned) as an additional label for tag3as shown in the mapping table145. As mentioned herein, this process by the application105occurs for each user in the social network who fills out any type of form and automatically (continuously) builds the mapping table145without an administrator having to manually input labels for each predefined tag140.

Now turning toFIG. 4,FIG. 4illustrates a block diagram of a graphical user interface (GUI) and shows an example of a field400in accordance with exemplary embodiments. One skilled in the art understands a GUI. The field400may be one of many fields of a form in which the user is filling in, and the form may be any electronic form hosted by (or downloaded from), e.g., various websites80on host servers85. The field400is displayed to the user on the display45. In accordance with exemplary embodiments, the application105is configured to fill in the field400by scanning and recognizing a label402for an empty box404. The application105identifies the label402and searches in the mapping table145for a match to the label402which corresponds to a predefined tag140. The application105may find the match to the label402to be the tag3(which is one of the predefined tags140) as shown in the mapping table145inFIG. 2. Once the match to the label402is found, the application105utilizes the tag3to search in the user profile130to find the corresponding value which is value 3 (of the values 1−N). Accordingly, the application105is configured to automatically fill in the empty box404with the value 3 (e.g., “Smith”).

One issue related to data gathered in a social networking environment is the trustworthiness of the information posted. Most conventional systems require some sort of explicit rating from the users (of the social network) which makes them cumbersome and ineffective.

However, exemplary embodiments provide the application105to intelligently quantify the trustworthiness of the training data (collected from users of the social network utilizing computers20and70) in accordance with exemplary embodiments.

By the application105analyzing the users' interventions with the forms (which is the form being automatically filled in), rating is done transparently by the application105, which thus provides greater robustness and efficiency and is less error prone. The application105performs form data analysis (such as the entire form to be filled in) and field-level data analysis (individual data fields) in different metrics and granularities. The application105is configured to increase system security measures to eliminate ill-intended data tampering by any user of the social network. The application105provides a user configurable threshold level to control auto fill-in behavior in the GUI.

For example, when any user has a form that needs to be filled in, the application105(e.g., which may be an Internet Explorer® add-on as application105afor a web page) is configured to track and collect acceptance information155as the user fills in the form. The acceptance information155is stored in the database115. The acceptance information155is a collection of each time the user (and any user) accepts and rejects (which is the same as changes) the value automatically input by the application105. The acceptance information155also keeps track of which predefined tag140corresponds to the pre-filled value in the user profile130and which label matched (corresponds to) the predefined tag140in the mapping table145. Accordingly, the application105can identify the label recognized in the form and can identify which predefined tag140that the recognized label is mapped to; when an error is determined the incorrect label to predefined tag140mapping can be removed. In other words, the application105can automatically remove the label.

For example, for each form to be automatically filled in, the application105is configured to automatically fill in the values and detect whether the value has been altered by the user from the pre-filled value. This allows the indication (to the application105) of acceptance without user intervention (e.g., without the user explicitly submitting a vote). The application105is configured to accumulate the acceptance score (as the acceptance information155) of the form by looking at the percentage of the pre-filled values being accepted (and rejected) by the user (which may be based on each recognized label in the form and the predefined tag140that the recognized label is mapped to). The application105uploads the acceptance information to the centralized server10. As discussed herein, the application105includes the application105a, and the application105amay be a plug-in to, e.g., Internet Explorer®, Firefox®, and so forth.

Further, the application105is configured to allow the user to configure “to fill or not to fill” based on a threshold score (per-form and/or per-field). The threshold score can be set by the user, e.g., at 75%. Accordingly, if a trustworthiness score for a field is not at the threshold score of 75%, the application105does not automatically insert the pre-fill value for the field. Also, if the trustworthiness score for the entire form does not reach the threshold score of, e.g., 75%, the application105does not fill in the form. The trustworthiness score may be calculated by the application105based on the acceptance and rejection of pre-filled values across the users of the social network, and the trustworthiness score is stored in the database115. For each form, the application105is configured to retrieve the trustworthiness score from the database115of the centralized server10. Based on the trustworthiness score and the configured threshold score, the application105is configured to determine whether auto fill-in should be performed. There are many options in which the user may configure the auto fill-in for the application105. For example, the user can configure preferences (of the application105) for “don't fill in”, “fill in”, and/or “fill in with confirmation” based on different threshold scores set by the user. The preferences of the application105may be configured by the user so that if the trustworthiness score is below threshold X, “don't fill in” the value. The preferences of the application105may be configured by the user so that if the trustworthiness score is above threshold X but below Y, “fill in with confirmation”. The preferences of the application105may be configured by the user so that if the trustworthiness score is above threshold Y “fill in” automatically.

Additionally, the application105is configured to calculate the trustworthiness score from the acceptance information155collected using a statistical method (such as, e.g., summation) and to distribute the trustworthiness score (for, e.g., a label, predefined tag, etc.) to individual users upon request. The user may request via the GUI (of the application105aand/or application105) for the trustworthiness score for a particular field.

The acceptance information155is utilized to refer to the acceptance information155, acceptance information155a, and acceptance information155b, and when a distinction is meant between the acceptance information155,155a, and155b, acceptance information155aor155bwill be indentified individually.

The application105is configured with other security measures to prevent data tampering by hackers, such as monitoring (and rejecting based on) user location, repeated voting from the same IP address, etc., when the user is attempting to skew the label to predefined tag140mapping in the mapping table145.

Turning back toFIG. 4, the application105may automatically insert a pre-fill value (such as “Smith”, “123456”, “789012” or “107 Street Lane”) from a box406. For example, the application105may automatically insert the value “Smith” in box404. If the user intervenes to, e.g., erase the value, the application105is configured to recognize this user intervention as a rejection and the application105adds this user intervention to the acceptance information155. If the user does not erase (or change the value) the automatically filled value “Smith”, the application105is configured to recognize this user intervention (which is actually no intervention by the user) as an acceptance, and this user intervention is added to the acceptance information155. Also, in exemplary embodiments, the application105may provide the options in the box406from which the user can select. If the user selects, e.g., “Smith”, the application105is configured to recognize this user intervention (which is the selection of “Smith”) as an acceptance which is added to the acceptance information155. For the user, the application155collects both rejections/deletions and acceptances for the acceptance information155.

FIG. 6illustrates a process600for sharing training data in accordance with exemplary embodiments.

The application105is configured to receive the input value by a user for a new label of a form at602.

The application105is configured to determine whether the value input by the user is in the user profile130at604.

If the value is not in the user profile130, the application105is configured to map the value to a tag (predefined tag140) and add the value and tag in the user profile130, and the application105is configured to map the label to the tag in the mapping table at606. The process ends.

If the value is in the user profile130, the application105is configured to locate the corresponding tag in the user profile at608.

Using the tag, the application105is configured to locate the previously stored labels in the mapping table145that correspond to the tag (predefined tag140) at610.

The application105is configured to determine whether the new label matches one of the previously stored labels at612.

If the new label does match one of the previously stored labels, the application105ends the process. If the new label does not match one of the previously stored labels, the application105is configured to add the new label to map to the tag in the mapping table in addition to the previously stored labels at614.

The process600occurs for each user (such as a first user, second user third user, through user N) of the social network to expand and increase the labels corresponding to each one of the predefined tags140in the mapping table145. Since new terms (labels) are constantly being added in society, when the users of the social network fill in a box of a form with values, and values are described by new labels (terms), the application105automatically adds the new label to the predefined tag140in the mapping table145. The process600keeps the labels of the mapping table145up-to-date (by the users of the social network) without having to have an operator manually input labels for each term.

Further regarding initializing the user profile130,FIG. 7illustrates an example diagram700in accordance with exemplary embodiments andFIG. 7is an abridged version ofFIG. 1.FIG. 7illustrates the centralized server10, the host servers85, and the computer20. All the elements shown inFIG. 1are understood but not repeated inFIG. 7so as not to obscure diagram700. For example, the network30is not repeated along with various software and hardware modules fromFIG. 1.

With reference toFIG. 7, different scenarios will be described for utilizing exemplary embodiments to gain a better understanding but are not meant to be limiting. In a first scenario, the user of the computer20signs up for an automatic form filling service for the first time in accordance with exemplary embodiments. The user may sign up for the auto form filling service of by registering with user information the application105as understood by one skilled in the art. The application105a(such as a plug-in) is installed in the user computer20, which works with the web browser on the user computer20. The application105adownloads the list of existing predefined tags140and their corresponding labels (“Tag-Label”) from the centralized server10and/or the remote device21.

The application105aasks the user to input information for each (displayed) label (which corresponds to the predefined tags140). For example, if the user is in England, the application105may have the relationship “Tag: Lastname, to Label:Family Name”; the user will be asked for her “Family name” on the display screen45.

In the application105a, the user may input “Smith” (which is a value) such that the Family Name=Smith. The application105awill store the “Tag” and “Smith” (i.e., Tag and value) in the database115abelonging to the user. For example, the application105astores the “Tag” and “Smith” (i.e., Tag and value) in the user profile103as discussed herein.

The user profile130(which may be a database itself) could be local on the computer20, and/or provided by the remote device21. For example, the remote device21may include a user profile130bin the database115b. In the present disclosure, the user profile130is utilized to refer to the user profile130and user profile130bunless otherwise specified. Note that each individual user has her own user profile130containing personal data utilized for automatically filling in forms. In addition to the mapping table145having the predefined tag140to label relationship, the user may choose to store a whole and/or partial mapping table145blocally (such as the relationship of Tag A to Label1, Label3. . . ). The application105provides the user with user preference options for what and the amount of information to store in the mapping table145. For example, the user preference options for the mapping table145bmay be based on and/or the application105may automatically restrict labels in the mapping table145bbased on the implementation, configuration (language, locale), available database storage, etc. For example, if the user selects and/or the application105automatically limits the labels in the mapping table145bto English. Accordingly, since the user listed English only (e.g., during registration), the mapping table145would not include a label as a Korean equivalent to the English label “LastName” or a label as a Malaysian equivalent to the English label.

In a scenario example, the user is now registered for the automatic form filling service and is attempting to fill in a form. In this scenario, the user may or may not have configured (initialized the user profile130) the automatic form filling service.

The user may access a web site (such as www.buyAThing.com hosted on the server85) through the URL on the user computer20, and the user is ready for check out. The web site sends a form (e.g., a check out form) to the user computer20. The application105a(plug-in) on the user computer20is configured to analyze the form and find a set of labels on the form.

For each label (e.g., “Last name”), the application105aqueries the mapping table145aon the database115afor the label and in an attempt to find a predefined tag140that corresponds to the label.

If local mapping table145ain the local database115adid not show any matches for the label, the application105awill query the centralized server10to search for the label in the mapping table145.

Now, by using label in the query, the application105has found the corresponding predefined tag140(from mapping table115in database115of centralized server10or the local mapping table145ain the user database115a). The application105aqueries the user profile130(with the corresponding tag) to find the tag and value. If the tag exists and a value is defined for the tag in the user profile130, the application105afills in the value in the form downloaded from the web site.

On the other hand, if the tag exists and a value is not defined, the application105displays a dialog box to the user with a user friendly label (e.g., a label of “Family Name” could be displayed), and the user inputs the value. The application105aadds the “Value” for the tag to the user profile130to correspond with the tag.

If the tag does not exist in the user's list of predefined tags140abut was found in the predefined tags140in the centralized server10, the application105adisplays a dialog box to the user with a user friendly label. The application105areceives the value input by the user and adds the “Tag and Value” to the user profile130. The “new” predefined tag140may not be in the user's predefined tags140abecause a member of the social network may have input the “new” tag. For example, the user may have a form with a label in Korean and the application105finds a tag to match the Korean label. Instead of displaying the Korean label to the (US) user, the application105displays a US label such as “Family name” as shown inFIG. 2for Tag3.

In a third scenario, the user helps the centralized server learn about more labels in accordance with exemplary embodiments. As mentioned above, the user may access the web site www.buyAThing.com and is ready for check out. The web site on server85send a form (checkout form) to the user computer20, and the application105a(plug-in) analyzes the form to find a set of labels. For each label (e.g., such as ZZZMoBa), the application105aqueries the mapping table145afor the label hoping to find a tag (that corresponds to the label ZZZMoBa). If the local mapping table145adid not show any match for the label, the application105awill query the mapping table145on centralized server10. Unlike the second example above, the application105adid not find a matching tag (that corresponds to the label ZZZMoBa) in the mapping table145of the centralized server10or the mapping table145aof the user computer20. Accordingly, the application105aexecutes the following process. The application105aasks the user to input a value with (displaying) the label given by the form (i.e., ZZZMoBa). The application105areceives the user input a value “Smith”. The application105aqueries the user profile130for a value “Smith”, and finds that “Smith” belongs to a Tag “Last name” (such as Tag3inFIG. 2). The application105asends the label “ZZZMoBa” to the centralized server10indicating that it (ZZZMoBa) maps to Tag “LastName” (which is Tag3inFIG. 2), and the application105adds “ZZZMoBa” to the mapping table145to correspond with Tag “LastName” (e.g., Tag3). Optionally, the application105amay update/add to the “ZZZMoBa” to the Tag-Label relationship in the local mapping table145a.

In a fourth scenario, the user helps the centralized server to learn about more labels in accordance with exemplary embodiments. As mentioned above, the user access the web site www.buyAThing.com and is ready for check out. The server85of the web site sends a form (checkout form) to the user computer20. The application105arecognizes and analyzes the form, and the application105afinds a set of labels on in the form. For each label (e.g., ZZZMoBa), the application105aqueries the local mapping table145aattempting to find a tag (that corresponds to the label in the query). If local mapping table145did not show any match for the label “ZZZMoBa”, the application105awill query the mapping table145of the centralized server10. In this fourth scenario, the application105adid not find a matching tag in the mapping table145of the centralized server10or in the local mapping table145aof the computer20.

Now, the application105aasks the user to input a value with the label (ZZZMoBa) given by the form. The application105areceives a user input value “Smith”. The application105aqueries the user profile130for a value “Smith”, and did not find any matches to the value. The application105ais configured to send “ZZZMoBa” to the centralized server10indicating that there is a new tag and new label. The application105creates a new tag (e.g., a string) to correspond with the new label “ZZZMoBa”. Also, the application105creates the new tag as “ZZZMoBa” and create the new label as “ZZZMoBa”. Either way the new tag and new label are both stored in the mapping table145on the centralized server10. Optionally, the application105aupdates/adds the new tag and new label (Tag-Label) relationship in the local mapping table145a.

Now turning toFIG. 8illustrates an example diagram800in accordance with exemplary embodiments andFIG. 8is an abridged version ofFIG. 1. All the elements shown inFIG. 1are understood but not repeated inFIG. 8so as not to obscure diagram800. For example, various software and hardware components may not be repeated fromFIG. 1.

The diagram800illustrates an example in which a malicious website site on server85attempts to cause predefined tags140to be incorrectly mapped to improper labels in the mapping table145, with the hopes that when the application105auto fills in a form, personal information may be filled in the form in unrelated fields without the user recognizing the mistake.

For example, hackers of the malicious web site (represented as www.hackcomputer.com) may have signed up for the social network. The malicious web site on the server85may communicate with the server10to pre-associate labels (“ZZZ” and Birthday) with the predefined tags140, so that auto fill in will be quicker. However, as seen in the mapping table145, the malicious web site on server85has improperly associated the “ZZZ” label with the predefined tag140for social security number. “ZZZ” could be an address label, telephone number label, and/or any other label that does not display social security number to the user. The hackers may fill in the hacker form805and request the application105to automatically retrieve the corresponding information from the user profile130. So for example, the application105will recognize that predefined tags140have been pre-associated with labels in the hacker form805so the application105will utilize the pre-associated tags140to extract the corresponding values from the user profile130. The application105will fill in the hacker form805will a social security number for the label “ZZZ”. Alternatively, and/or additionally, the hackers may not have pre-associated predefined tags140to labels of the hacker form805but hackers may input their corresponding social security number (which will probably be false) for the “ZZZ” label so that the application105will recognize (and map) the “ZZZ” label to the predefined tag140for social security number in the mapping table145. By to the example, there may be three hackers of the malicious web site that fill in the hacker form805and accept the auto fill in values of the application105, such that the accept155calculates a 100% trustworthiness score for these associations.

There may be three users (who are members of the social network) who access (e.g., download) the hacker form805on their respective computer20. Peter may recognize that for the “ZZZ” label his social security number (value) was automatically filled in from the user profile130, and Peter deletes this value and input the correct value (which may be telephone number). Likewise, Ronna recognizes that her social security number was automatically filled in by the application105; she deletes this value and inputs the correct value (e.g., telephone number). However, Gilbert may not recognize this error. The accept155retrieves and/or is pushed this acceptance information from the three users, and the accept155modifies the trustworthiness for these associations based on the responses to the automatic fill in by the application105. Since two of the three user's rejected the value input for the mapping association between tag140social security number and label “ZZZ”, accept105calculates the new trustworthiness score as 66%. For each user who accepts and rejects the value input for the “ZZZ” label, the accept155will continue to calculate a new trustworthiness score to reflect the malicious intentions of the malicious web site on the server85.

Also, as additional security features, another member of the social network (James) may set auto form fill in configurations (i.e., preferences)810in his user profile130. For James, the application105may never auto fill in values (from the user profile130) for credit card information, social security number, pay pal information, and/or any financial type information if the trustworthiness is less than 80%. Accordingly, since the trustworthiness is currently 66%, the application105is not permitted to fill in the value for James' social security number into the field for the “ZZZ” label. For example, the application105may use to the tag140to locate the corresponding value for the social security number for James but recognizes that the value requires a greater than 80% trustworthiness. The application105will check the trustworthiness for this association, determine that the trustworthiness is 66%, and not automatically fill in the value for the “ZZZ” label.

Also, the configurations (preferences)810for James may require confirmation before the application105automatically inputs certain values from the user profile130. For example, confirmation may be required before the application150automatically fills in an email address for email subscriptions, when the trustworthiness is less than 90%, when the number of members who have used a particular form is less than 1000, and so forth.

Further regarding security features, the logical algorithm that is implemented by the accept155can utilize many metrics to determine trustworthiness. For example, the algorithm of the accept application155could be based on a percentage, ratio (of acceptances, deletions, and/or replacements), weight average, and/or any other statistical method. For calculating the trustworthiness incorporating weight average, the accept155could add more weight to a deletion than a replacement.

Also, for calculating the trustworthiness score for a tag to label association, the input into the algorithm of the accept155may include acceptance count, replacement count, deletion count, and/or any detectable and accountable value; each input into the accept155could be weighted. Further, the calculation for the trustworthiness can be weighted based on the number of unique users (members) involved in the pool for this association. For example, members who are all utilizing the same IP address (or group of IP addresses), server, MAC address, user ID/password, friends network, etc., would be given less weight in determining the trustworthiness score for the association.

The trustworthiness calculated by the accept155will also change when a web site is purchased by another person (entity), when a web site is being hacked, and/or based on “age” of the captured acceptance information. With respect to “aging”, the older acceptance information may have less weight (and/or more weight) depending on the algorithm of the accept155. For example, acceptance information from the last 2 days may have more weight in the trustworthiness calculation by the accept155than last month's (year's) acceptance information.

Additionally, the calculation of the trustworthiness (by the accept155) may be based on the total number of users who filled in a form from the particular web site. If there are fewer users then there is a lower trustworthiness, there may have to be a certain number of user before the trustworthiness is able to reach a certain score (like 80%), etc.

As discussed herein, the trustworthiness score (of the accept155) could be per field on the form and/or an overall form level trustworthiness for the entire form. The application105may be implemented as, e.g., a plug-in that could allow users to explicitly report malicious/suspicious activities and other metrics could be determined implicitly through user behavior.

The logic of the accept155is configured to allow the user to make mistakes and allow the algorithm to make mistakes. The social network and aging built into the accept155will correct the mistake automatically. When the application105automatically inputs value to a form, a user may be inebriated (or inattentive) when filling in the form and the user may mistakenly delete correct values, accept incorrect values, and/or replace correct values with incorrect values. The accept155would receive this acceptance information of the inebriated user to calculate the corresponding trustworthiness. However, since the trustworthiness of the accept155is calculated based on the acceptance information of numerous users of the social network, the actions of the inebriated user can be corrected by the accept155because a single user can not skew the average. Further, as the acceptance information for the inebriated user “ages”, his information will have less weight (compared to 900 other users) in the trustworthiness calculation by the accept155. As such, the mistake and/or malicious act of a user becomes insignificant as compared to the other users of the social network, and thus the accept155is self-correcting.

The security features may further be integrated in with Google Alert™, SafeSearch™, etc.

With regard to malicious web site testing application, malicious web site testing application uses content inspection, which does not handle “new Attack Mechanism”. Security features of exemplary embodiments will allow malicious web site problems to be discovered faster, e.g., before the content inspection application has a chance to react to the threat. Exemplary embodiments will prevent the problem from spreading (create a score), once the accept155has a chance to gain enough feedback (a predefined number) from the social network. Further, after seeing malicious behavior with respect a web site, the user may explicitly click on a button (of a GUI of the application105) to indicate “disliked” or “unsafe” website.

As discussed herein, the application105may be a plug-in that assists (listens) to user activities via, e.g., Internet Explorer® browser. Since exemplary embodiments relate to receiving feedback from users (members) in a social network, when in a peer-to-peer (P2P) download environment such as Edonkey, which may be generally used to share video files, music files, and computer programs, the application105may monitor user actions to benefit the members of the social network. When the user conducts a file search for a file sharing web site (such as Edonkey), for the same file search result (e.g., user was looking for a single file), the user (click on to) downloads the first file, and if the user downloads a second file, the application105will accept this is a good indicator that the first file “might not work for the user”. By application105monitoring the user actions (which include the user's search, the search results, and the subsequent selections of links in the search results), the application105recognizes that the download link to the first file is possibly bad and creates a score; the value (which may be a low value) of this score reflects to the members that the first file link is possible bad (i.e., less trustworthy), since the second file link was selected for the same search results of the peer-to-peer environment.

Also, while being monitored by the application105, suppose a browsing user clicks on a link (web site) and after accessing the link, the link causes the computer20to open an additional five browser windows. The application105will create a score for this link, and the value (which may be a low value) of the score (reflects to the members) that multiple web browser widows popped of from this link.

FIG. 5illustrates an example of a computer500having capabilities, which may be included in exemplary embodiments. Various methods, procedures, modules, flow diagrams, and techniques discussed herein may also incorporate and/or utilize the capabilities of the computer500. Moreover, capabilities of the computer500may be utilized to implement features exemplary embodiments discussed herein. One or more of the capabilities of the computer500may implement any element discussed herein, e.g., such as but not limited to elements105,105a,105b,115,115a,115b,10,20,21,70,130etc.

Generally, in terms of hardware architecture, the computer500may include one or more processors510, computer readable storage memory520, and one or more input and/or output (I/O) devices570that are communicatively coupled via a local interface (not shown). The local interface can be, for example but not limited to, one or more buses or other wired or wireless connections, as is known in the art. The local interface may have additional elements, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. Further, the local interface may include address, control, and/or data connections to enable appropriate communications among the aforementioned components.

The processor510is a hardware device for executing software that can be stored in the memory520. The processor510can be virtually any custom made or commercially available processor, a central processing unit (CPU), a data signal processor (DSP), or an auxiliary processor among several processors associated with the computer500, and the processor510may be a semiconductor based microprocessor (in the form of a microchip) or a macroprocessor.

The software in the computer readable memory520may include one or more separate programs, each of which comprises an ordered listing of executable instructions for implementing logical functions. The software in the memory520includes a suitable operating system (O/S)550, compiler540, source code530, and one or more applications160of the exemplary embodiments. As illustrated, the application560comprises numerous functional components for implementing the features, processes, methods, functions, and operations of the exemplary embodiments. The application560of the computer500may represent numerous applications, agents, software components, modules, interfaces, controllers, etc., as discussed herein but the application560is not meant to be a limitation.

The operating system550may control the execution of other computer programs, and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.

The application(s)560may employ a service-oriented architecture, which may be a collection of services that communicate with each. Also, the service-oriented architecture allows two or more services to coordinate and/or perform activities (e.g., on behalf of one another). Each interaction between services can be self-contained and loosely coupled, so that each interaction is independent of any other interaction.

Further, the application560may be a source program, executable program (object code), script, or any other entity comprising a set of instructions to be performed. When a source program, then the program is usually translated via a compiler (such as the compiler540), assembler, interpreter, or the like, which may or may not be included within the memory520, so as to operate properly in connection with the O/S550. Furthermore, the application560can be written as (a) an object oriented programming language, which has classes of data and methods, or (b) a procedure programming language, which has routines, subroutines, and/or functions.

The I/O devices570may include input devices (or peripherals) such as, for example but not limited to, a mouse, keyboard, scanner, microphone, camera, etc. Furthermore, the I/O devices570may also include output devices (or peripherals), for example but not limited to, a printer, display, etc. Finally, the I/O devices570may further include devices that communicate both inputs and outputs, for instance but not limited to, a NIC or modulator/demodulator (for accessing remote devices, other files, devices, systems, or a network), a radio frequency (RF) or other transceiver, a telephonic interface, a bridge, a router, etc. The I/O devices1070also include components for communicating over various networks, such as the Internet or an intranet. The I/O devices1070may be connected to and/or communicate with the processor105utilizing Bluetooth connections and cables (via, e.g., Universal Serial Bus (USB) ports, serial ports, parallel ports, FireWire, HDMI (High-Definition Multimedia Interface), etc.).

When the computer500is in operation, the processor510is configured to execute software stored within the memory520, to communicate data to and from the memory520, and to generally control operations of the computer500pursuant to the software. The application560and the O/S550are read, in whole or in part, by the processor510, perhaps buffered within the processor510, and then executed.

When the application560is implemented in software it should be noted that the application560can be stored on virtually any computer readable storage medium for use by or in connection with any computer related system or method. In the context of this document, a computer readable storage medium may be an electronic, magnetic, optical, or other physical device or means that can contain or store a computer program for use by or in connection with a computer related system or method.

The application560can be embodied in any computer-readable medium520for use by or in connection with an instruction execution system, apparatus, server, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable storage medium” can be any means that can store, read, write, communicate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, or semiconductor system, apparatus, or device.

It is understood that the computer500includes non-limiting examples of software and hardware components that may be included in various devices, servers, and systems discussed herein, and it is understood that additional software and hardware components may be included in the various devices and systems discussed in exemplary embodiments.