Patent Publication Number: US-9892169-B2

Title: Embedded content suitability scoring

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates generally to the field of content management, and more particularly to embedded content suitability scoring. 
     Content management (CM), is a set of processes and technologies that supports the collection, managing, and publishing of information in any form or medium. When stored and accessed via computers, this information has come to be referred to, simply, as content or, to be precise, digital content. Digital content may take the form of text (such as electronic documents), multimedia files (such as audio or video files), or any other file type that follows a content lifecycle requiring management. 
     SUMMARY 
     According to one embodiment of the present invention, a method for embedded content suitability scoring is provided. The method includes identifying, by one or more processors, a plurality of containers of a document, wherein each container includes a portion of content of the document; identifying, by one or more processors, a source for a container of the plurality of containers of the document by matching the content of the container to the content of the source; determining, by one or more processors, a suitability score for the container based, at least in part, on the content of the container and the content of the source; determining, by one or more processors, a suitability category for the container based, at least in part, on the suitability score; and presenting, by one or more processors, the document along with markup of the container that is based, at least in part, on the suitability category. 
     According to another embodiment of the present invention, a computer program product for embedded content suitability scoring is provided. The computer program product comprises a computer readable storage medium and program instructions stored on the computer readable storage medium. The program instructions include program instructions to identify a plurality of containers of a document, wherein each container includes a portion of content of the document; program instructions to identify a source for a container of the plurality of containers of the document by matching the content of the container to the content of the source; program instructions to determine a suitability score for the container based, at least in part, on the content of the container and the content of the source; program instructions to determine a suitability category for the container based, at least in part, on the suitability score; and program instructions to present the document along with markup of the container that is based, at least in part, on the suitability category. 
     According to another embodiment of the present invention, a computer system for embedded content suitability scoring is provided. The computer system includes one or more computer processors, one or more computer readable storage media, and program instructions stored on the computer readable storage media for execution by at least one of the one or more processors. The program instructions include program instructions to identify a plurality of containers of a document, wherein each container includes a portion of content of the document; program instructions to identify a source for a container of the plurality of containers of the document by matching the content of the container to the content of the source; program instructions to determine a suitability score for the container based, at least in part, on the content of the container and the content of the source; program instructions to determine a suitability category for the container based, at least in part, on the suitability score; and program instructions to present the document along with markup of the container that is based, at least in part, on the suitability category. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a functional block diagram illustrating a computing environment, in accordance with an embodiment of the present invention. 
         FIG. 2  is a flowchart depicting operations for embedded content suitability scoring, on a computing device within the computing environment of  FIG. 1 , in accordance with an embodiment of the present invention. 
         FIG. 3A  is a depiction of an example user interface presenting an example document, in accordance with an embodiment of the present invention. 
         FIG. 3B  is a depiction of an example user interface presenting markup for the example document of  FIG. 3A , in accordance with an embodiment of the present invention. 
         FIG. 4  is a block diagram of components of a computing device executing operations for embedded content suitability scoring, in accordance with an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the present invention recognize that a modern content management system (CMS) may offer many capabilities for the deposit and maintenance of centralized information. For example, a CMS may provide tracking versions of a document. Embodiments recognize a need for addressing content embedded or attached into higher-level structures or documents. Further, embodiments recognize difficulties when managing content for relevance, accuracy, and security. 
     Embodiments of the present invention provide for extended content management capabilities. In the description herein, an email message is used as an illustrative example of one implementation of the invention. However, it should be understood that other types of documents and content may be used in other implementations. Embodiments of the present invention provide content management for reused content. 
     Embodiments of the present invention will now be described in detail with reference to the Figures.  FIG. 1  is a functional block diagram illustrating a computing environment, in accordance with an embodiment of the present invention. For example,  FIG. 1  is a functional block diagram illustrating computing environment  100 . Computing environment  100  includes computing device  102  and client device  110  connected over network  120 . Computing device  102  includes scoring program  104  and content management (CM) database  106 . Client device  110  includes a user interface (UI), client UI  112 , and document  114 . 
     In various embodiments, computing device  102  is a computing device that can be a standalone device, a server, a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), or a desktop computer. In another embodiment, computing device  102  represents a computing system utilizing clustered computers and components to act as a single pool of seamless resources. In general, computing device  102  can be any computing device or a combination of devices with access to client device  110 , and with access to and/or capable of executing some or all of scoring program  104 , CM database  106 , client UI  112 , and document  114 . Computing device  102  may include internal and external hardware components, as depicted and described in further detail with respect to  FIG. 4 . 
     In this exemplary embodiment, scoring program  104  and CM database  106  are stored on computing device  102 , and client UI  112  and document  114  are stored on client device  110 . In other embodiments, one or more of scoring program  104 , CM database  106 , client UI  112 , and document  114  may reside on other computing devices, provided that each can access and is accessible by each other. In yet other embodiments, one or more of scoring program  104 , CM database  106 , client UI  112 , and document  114  may be stored externally and accessed through a communication network, such as network  120 . Network  120  can be, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, or a combination of the two, and may include wired, wireless, fiber optic or any other connection known in the art. In general, network  120  can be any combination of connections and protocols that will support communications between computing device  102  and client device  110 , in accordance with a desired embodiment of the present invention. 
     Scoring program  104  operates to determine a suitability score for one or more portions of content. In one embodiment, scoring program  104  determines a suitability score based on a document and content of a source. For example, scoring program  104  determines a suitability score for each of one or more portions of content of document  114  based on content of a source of CM database  106  that corresponds to each portion of content. In this example, scoring program  104  presents the suitability scores via client UI  112  by presenting document  114  along with markup reflecting the suitability scores. 
     Document  114  is an electronic document that includes content. In various examples, the content includes text, audio, video, multimedia, or any combination thereof. For example, document  114  may be a newsletter, a periodic report, a chat message (e.g., of an instant messaging program), or an email message. In order to facilitate discussion, embodiments of the present invention are discussed herein using an email message as an illustrative example, but it should be understood that such an example does not limit the scope of the invention. Generally, document  114  is an electronic document that includes content that may be reused from one or more sources. 
     CM database  106  is a data repository that may be read by scoring program  104 . One or more sources having content (e.g., portions of text, audio, video, multimedia, contact information, or other content) may be stored to CM database  106 . Each source may be associated with versioning information. The versioning information includes, in various examples, a file name, version number, revision date, and one or more previous versions of the content of the source. In one example, a source includes a contact record of an address book. In this case, the source may contain a version history for contact information that identifies a piece of contact information (e.g., a phone number, email address, or uniform resource locator (URL)) that was previously valid for the contact, but which has since been changed to a current version. In another example, a source includes an image depicting a company logo. In this case, the source may contain a version history identifying a logo that the company formerly used and a current version of the company logo. In the examples of the contact record and the company logo, each of the previous versions may be associated with a version number and a revision date. In some embodiments, CM database  106  may be written to and read by programs and entities outside of computing environment  100  in order to populate the repository with sources. In various examples, CM database  106  may be a database maintained by one or both of a content management system (CMS) and a customer relationship management (CRM) system. In some embodiments, CM database  106  represents one or more repositories maintained by any number of entities. For example, CM database  106  may include a web server, a file repository, a community site, or any other entity. In some embodiments, CM database  106  includes references (e.g., identifying metadata, document identifiers, or uniform resources locators) to a source that is stored outside of CM database  106 , but which is accessible via CM database  106 , in which case the sources of CM database  106  include the referenced source. In some embodiments, CM database  106  specifies distribution permissions for one or more sources. Distribution permissions may specify conditions under which distribution of content of a source may be allowed or prohibited. For example, distribution permissions may prohibit sharing content of a source outside of a particular group of individuals (e.g., individuals on an access control list, a department, a company, or a country). 
     Client UI  112  executes locally on client device  110  and operates to provide a UI to a user of client device  110 . Client UI  112  further operates to receive user input from a user via the provided user interface, thereby enabling the user to interact with client device  110 . In one embodiment, client UI  112  provides a user interface that enables a user of client device  110  to interact with scoring program  104  of computing device  102  via network  120 . In various examples, the user interacts with scoring program  104  in order to view document  114  along with markup reflecting suitability scores as determined by scoring program  104 . In one embodiment, client UI  112  is stored on client device  110 . In other embodiments, client UI  112  is stored on another computing device (e.g., computing device  102 ), provided that client UI  112  can access and is accessible by at least scoring program  104 . 
     In various embodiments, client device  110  is a computing device that can be a standalone device, a server, a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smart phone, or any programmable electronic device capable of communicating with computing device  102  via network  120 . In another embodiment, client device  110  represents a computing system utilizing clustered computers and components to act as a single pool of seamless resources. In general, client device  110  can be any computing device or a combination of devices with access to computing device  102 , and with access to and/or capable of executing some or all of client UI  112  and document  114 . Client device  110  may include internal and external hardware components, as depicted and described in further detail with respect to  FIG. 4 . 
       FIG. 2  is a flowchart depicting operations for embedded content suitability scoring, on a computing device within the computing environment of  FIG. 1 , in accordance with an embodiment of the present invention. For example,  FIG. 2  is a flowchart depicting operations  200  of scoring program  104  on computing device  102  within computing environment  100 . 
     In step  202 , scoring program  104  receives a document. In one embodiment, scoring program  104  receives a document from client device  110 . For example, scoring program  104  receives document  114  from client device  110  in response to a user interaction with client UI  112 . In the illustrative example of  FIGS. 3A-3B , the document is an email message, which scoring program  104  evaluates. In such an example, scoring program  104  receives the email message in response to a user interaction such as opening or editing a new outgoing email message, draft outgoing email message, or received email message. As described above in further detail, document  114  includes content. 
     In step  204 , scoring program  104  identifies at least one container of the document. A container is a portion of content of a document that separated into a unit. For example, an email message may include one or more containers for the header, subject, body, and attachments. The header of an email message may specify recipient addressing and/or routing information. In one embodiment, each paragraph of the body of the email is a separate container. In one embodiment, scoring program  104  performs operations  206  and  208  for each of the at least one container of the document. In various embodiments, scoring program  104  identifies containers utilizing document metadata, structural analysis of the document, semantic analysis of the content, content parsing, and other natural language processing techniques. In another embodiment, scoring program  104  identifies one or more containers of document  302  (see  FIGS. 3A-3B ) in response to user input. For example, scoring program  104  receives user input via client UI  112  that delineates the boundaries of a container. In another example, the user input identifies a portion of content for a container. 
     In step  206 , scoring program  104  identifies a source for a container. For example, scoring program  104  identifies a source within CM database  106  by matching the content of the container to the content of the source. In one embodiment, scoring program  104  identifies a source of the container as the source having a current or previous version of content that matches the content of the container. As mentioned above, scoring program  104  may perform operations  206  and  208  for each of the at least one container of the document. Accordingly, although operations  206  and  208  are discussed with reference to a single container, one of ordinary skill in the art will recognize that multiple iterations of operations  206  and  208  may be performed in order to process each container. 
     In one embodiment, scoring program  104  identifies a source utilizing an inference engine. In various examples, the inference engine utilizes one or more of the following techniques: one or more bodies of knowledge, natural language processing, profile/rules information, one or more workflows, metadata analysis, semantic analysis, cognitive computing, question answering techniques, and inference generation. The one or more bodies of knowledge may include corporate and/or industry information processing guidelines or constraints. 
     In step  208 , scoring program  104  determines a suitability score for the container. Scoring program  104  determines the suitability score for a container by aggregating one or more scoring factors for the container. Scoring program  104  determines each scoring factor based on the contents of the container. In one embodiment, scoring program  104  represents each scoring factor as a value along a numerical range. For example, the numerical range is from 1.00 to 0.00, in which case a value of 1.00 indicates complete suitability and a value of 0.00 indicates complete unsuitability; generally, lower values represent lower suitability. In one embodiment, scoring program  104  aggregates the scoring factors by averaging the scoring factors. In another embodiment, scoring program  104  aggregates the scoring factors by averaging the scoring factors, unless the value of one or more of the scoring factors falls below a predetermined threshold (e.g., 0.10, 0.03, or 0.01), in which case the container is scored as challenged (i.e., 0.00), regardless of the values of any other scoring factors of the container. 
     Scoring program  104  may determine a scoring factor based on the accuracy of the contents of a container. In such embodiments, scoring program  104  compares the contents of the container to the contents of the source identified for the container (see step  206 ). In this case, the scoring factor represents the degree to which the contents of the container match the contents of the source. Content may be compared on a bit-by-bit basis, using a checksum, or other comparison technique. The scoring factor for accuracy is positively correlated with the closeness of the match. 
     In some embodiments, scoring program  104  also determines a scoring factor for a confidence score for the accuracy comparison. The confidence score reflects the degree of certainty with which scoring program  104  made the determination of closeness. In this case, the scoring factor for the confidence score is positively correlated with the confidence score. 
     In one embodiment, the scoring factor for accuracy is based, at least in part, on the accuracy of one or more facts or assertions stated within the content of the container. For example, if a container for a paragraph of text in the body of a paragraph contains an email address or URL that is outdated, then this inaccuracy negatively impacts the scoring factor for accuracy. 
     Scoring program  104  may determine a scoring factor based on the age of the contents of a container. In one such embodiment, scoring program  104  determines the scoring factor for age based on the version history of the source and a predetermined set of rules that specifies under what conditions content of a container is challenged due to age. In this case, the set of rules specifies whether content is challenged based on the version of content of the source that matches the content of the container. For example, the set of rules may specify that content of a container is challenged if the content matches a version of the source other than the current version. In another example, content is challenged if the content matches a version of the source that is older than a specified duration of time. In yet another example, content is challenged if the content matches a version of content of the source that is more than a predetermined number of revisions old. 
     In embodiments in which scoring program  104  employs an inference engine, the inference engine may include one or more rules that influence the determination of the suitability score of a container. For example, the inference engine may include a rule that specifies a portion of content of a source that may be modified without negatively impacting a suitability score of a container having content that matches the content of the source. Further, the inference engine may include another rule that specifies a portion of a source that, if modified, mandates a low suitability score for the container that matches the source. 
     In step  210 , scoring program  104  determines a suitability category for a container based on the suitability score for the container. In one embodiment, each suitability category corresponds to a sub-range of values within the range of values of suitability scores. Suitability categories may include, for example, verified, acceptable, questioned, and challenged. In one embodiment, each category corresponds to a range of suitability scores such that each possible value of a suitability score corresponds to one category. For example, the verified category corresponds to suitability scores greater than or equal to a first threshold, the acceptable category corresponds to suitability scores less than the first threshold and greater than or equal to a second threshold, the questioned category corresponds to suitability scores less than the second threshold and greater than or equal to a third threshold, and the challenged category corresponds to suitability scores below the third threshold. 
     In step  212 , scoring program  104  presents the document with markup reflecting suitability scores. Scoring program  104  presents markup for each container for which scoring program  104  determined a suitability score. The markup visually or graphically reflects the suitability score in a manner that conveys the meaning of the markup to a user. In one embodiment, scoring program  104  presents document  114  via client UI  112  with markup reflecting the suitability score determined by scoring program  104  for each container of document  114 . In one embodiment, scoring program  104  also presents a legend via client UI  112  that indicates the meaning of each type of markup. In some embodiments, scoring program  104  presents one or more prompts for each container. Prompts are discussed in further detail in connection with  FIG. 3B . 
     Each container is presented within a region of client UI  112 . Scoring program  104  presents the markup for a container by presenting information reflecting the suitability category of the container via client UI  112  in a way that associates the information with the container. In one example, scoring program  104  presents the markup for a container by highlighting, shading, outlining, or otherwise graphically indicating the container. The markup for a container graphically indicates the suitability category of the container. For example, the markup may include a color, pattern, text, or other indicator that corresponds to the suitability category to which the container belongs. In one embodiment, scoring program  104  presents the markup for a container by superimposing a graphical element over at least a portion of the region of client UI  112  in which the content of the container is depicted. An example UI is discussed with further detail in connection with  FIGS. 3A-3B . 
       FIG. 3A  is a depiction of an example user interface, generally designated  300   a , presenting example document  302 , in accordance with an embodiment of the present invention. 
     Example user interface  300   a  depicts document  302 , which is an email message. Document  302  includes containers  304   a ,  306   a ,  308   a ,  310   a ,  312   a ,  314   a ,  316   a , and  318   a . Container  304   a  is a header of the email message. Container  306   a  is a greeting line. Container  308   a  is a first paragraph of text. Container  310   a  is a second paragraph of text. Container  312   a  is an email signature. Container  314   a  is an image depicting a corporate logo. Container  316   a  is a first email attachment. Container  318   a  is a second email attachment. 
     In the depicted example, scoring program  104  identifies the containers of document  302  utilizing techniques discussed above. In particular, scoring program  104  identifies container  304  based on metadata and structural analysis of document  302 . Scoring program  104  identifies container  306   a  as a greeting based on the text being near the beginning of document  302  and further based on the content of the container fitting a semantic pattern of a greeting (e.g., &lt;greeting&gt;&lt;name&gt;&lt;transition punctuation&gt;). Scoring program  104  identifies containers  308   a  and  310   a  based on carriage returns (i.e., line breaks) separating the text within the body of document  302  into paragraphs. Scoring program  104  may identify container  312   a  as an email signature based on the text being near the end of document  302  and further based on the content of the container fitting a semantic pattern corresponding to an email signature. Scoring program  104  may also (or alternatively) identify container  312   a  as an email signature based on metadata. Further, based on metadata or structural analysis of document  302 , scoring program  104  may identify container  314   a  as an image, container  316   a  as an attachment, and container  318   a  as an attachment. 
     In one example, the content of container  306   a  is “Dear John Doe,” but the recipient email address specified in the portion of container  304   a  corresponding to the “To:” field does not correspond to John Doe. In this case, scoring program  104  determines a low suitability score for one or both of container  304   a  or container  306   a  due to the inaccuracy. In another example, the content of container  306   a  is “Dear John Doe,” and the email address of the “To:” field of container  304   a  matches a previous version of an email address of a contact record included in CM database  106 . In this case, scoring program  104  determines a low suitability score for container  304   a  and may present markup including a prompt to reconcile the outdated email address to a current email address. 
     In one example, container  318   a  is an attached file. Scoring program  104  matches the file to a source of CM database  106 . In this example, the source is a file that is associated with distribution permissions that specify that the file is not to be distributed outside of the company. Scoring program  104  determines whether the email message would share the file outside of the company based on the domain of each recipient email address of container  304   a . In response to determining that at least one email address does not belong to the domain of the company, scoring program  104  categorizes container  318   a  as challenged. 
       FIG. 3B  is a depiction of an example user interface, generally designated  300   b , presenting markup for example document  302 , in accordance with an embodiment of the present invention. For clarify of depiction, the content of the containers is omitted in  FIG. 3B . 
     Document  302  is depicted with markup  304   b ,  306   b ,  308   b ,  310   b ,  312   b ,  314   b ,  316   b , and  318   b . Scoring program  104  may present such markup in any of various ways; the example depicted in  FIG. 3B  is for illustrative purposes only. 
     Example user interface  300   b  includes legend  320 , which indicates a category indicated by a particular type of markup. Markup  304   b ,  306   b , and  314   b  indicates that containers  304   a ,  306   a , and  314   a , respectively, correspond to a verified category. Markup  308   b ,  312   b , and  316   b  indicate that containers  308   a ,  312   a , and  316   a , respectively, correspond to an acceptable category. Markup  310   b  indicates that container  310   a  corresponds to a questioned category. Finally, markup  318   b  indicates that container  318   a  corresponds to a challenged category. 
     Example user interface  300   b  also includes prompt  322  and prompt  324 , which are examples of prompts that scoring program  104  causes client UI  112  to present. Each prompt allows a user to indicate an action for a container. Scoring program  104  performs the indicated action. In various embodiments, scoring program  104  causes client UI  112  to present one or more prompts concurrently, in sequence, or in response to a user interaction with a container. For example, the user interaction with a container may be a mouseover, hover, click, or other gesture that indicates the container. In the depicted example, up to three actions are available for each container: reconcile, remove, or skip. The reconcile action and the skip action are unavailable for containers categorized as challenged (e.g., container  318   a ). 
     In one embodiment, scoring program  104  performs a reconcile action by modifying the content of the container to match the current version of the content of the source. In another embodiment, scoring program  104  performs a reconcile action by presenting all or part of the content of the source to the user (e.g., via client UI  112 ). In one example, scoring program  104  highlights or otherwise calls attention to differences between the content of the container and the content of the source. In such an example, scoring program  104  may show the differences via in-line change tracking, a modal dialog box, a modeless dialog box, or other user interface element. Scoring program  104  performs a remove action by deleting the content of the container from the document. In various embodiments, scoring program  104  performs a skip action by: changing the category of the container to the verified category, changing the category of the container to a skipped category, or maintaining the category of container and disregarding the container from further analysis. Further, scoring program  104  performing the skip action may include maintaining the markup of a skipped container (regardless of any category change) or changing the markup (e.g., to correspond to the category to which the container is changed). 
     In some embodiments, scoring program  104  causes client UI  112  to present a prompt for one or more containers. In one embodiment, scoring program  104  causes client UI  112  to present a prompt for each container. In another embodiment, scoring program  104  causes client UI  112  to present a prompt for each container corresponding to one or more particular categories. For example, scoring program  104  causes client UI  112  to present a prompt for each container corresponding to a category other than verified. 
     In some embodiments, scoring program  104  requires a user to indicate an action for each presented prompt. For example, scoring program  104  presents a prompt for each container not categorized as verified and requires a user to indicate an action for each prompt before scoring program  104  allows an email message to be sent. In another embodiment, scoring program  104  requires a user to indicate an action only for those containers corresponding to particular categories. For example, scoring program  104  requires a user to indicate an action for containers categorized as questioned. In yet another embodiment, scoring program  104  automatically acts upon a container by performing an action corresponding to the category of the container. For example, scoring program  104  removes challenged containers, reconciles questioned and acceptable containers, and skips verified containers. 
       FIG. 4  is a block diagram of components of a computing device, generally designated  400 , in accordance with an embodiment of the present invention. In one embodiment, computing device  400  is representative of computing device  102  within computing environment  100 , in which case computing device  102  includes scoring program  104  and CM database  106 . In another embodiment, computing device  400  is representative of client device  110  within computing environment  100 , in which case client device  100  includes client UI  112  and document  114 . 
     It should be appreciated that  FIG. 4  provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made. 
     Computer system  400  includes processor(s)  402 , cache  406 , memory  404 , persistent storage  410 , input/output (I/O) interface(s)  412 , communications unit  414 , and communications fabric  408 . Communications fabric  408  provides communications between cache  406 , memory  404 , persistent storage  410 , communications unit  414 , and input/output (I/O) interface(s)  412 . Communications fabric  408  can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric  408  can be implemented with one or more buses or a crossbar switch. 
     Memory  404  and persistent storage  410  are computer readable storage media. In this embodiment, memory  404  includes random access memory (RAM). In general, memory  404  can include any suitable volatile or non-volatile computer readable storage media. Cache  406  is a fast memory that enhances the performance of processor(s)  402  by holding recently accessed data, and data near recently accessed data, from memory  404 . 
     Program instructions and data used to practice embodiments of the present invention may be stored in persistent storage  410  and in memory  404  for execution by one or more of the respective processor(s)  402  via cache  406 . In an embodiment, persistent storage  410  includes a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive, persistent storage  410  can include a solid state hard drive, a semiconductor storage device, read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or any other computer readable storage media that is capable of storing program instructions or digital information. 
     The media used by persistent storage  410  may also be removable. For example, a removable hard drive may be used for persistent storage  410 . Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer readable storage medium that is also part of persistent storage  410 . 
     Communications unit  414 , in these examples, provides for communications with other data processing systems or devices. In these examples, communications unit  414  includes one or more network interface cards. Communications unit  414  may provide communications through the use of either or both physical and wireless communications links. Program instructions and data used to practice embodiments of the present invention may be downloaded to persistent storage  410  through communications unit  414 . 
     I/O interface(s)  412  allows for input and output of data with other devices that may be connected to each computer system. For example, I/O interface(s)  412  may provide a connection to external device(s)  416  such as a keyboard, keypad, a touch screen, and/or some other suitable input device. External device(s)  416  can also include portable computer readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention can be stored on such portable computer readable storage media and can be loaded onto persistent storage  410  via I/O interface(s)  412 . I/O interface(s)  412  also connect to display  418 . 
     Display  418  provides a mechanism to display or present data to a user and may be, for example, a computer monitor. 
     The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention. 
     The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes 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), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
     Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
     Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention. 
     Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
     These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. 
     The term(s) “Smalltalk” and the like may be subject to trademark rights in various jurisdictions throughout the world and are used here only in reference to the products or services properly denominated by the marks to the extent that such trademark rights may exist. 
     The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments 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 invention. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.