FIELD OF TECHNOLOGY
[0001] The present disclosure relates generally to the field of software and, more specifically to systems and methods of preventing unfair evaluations of applications by users.
BACKGROUND
[0002] The use of smartphones, tablet and other mobile computing devices has reached great popularity in the modern society. This fueled tremendous growth in the development of mobile applications that run on the mobile computing devices. In the majority of cases, these mobile applications are downloaded by users from an application store, such as Google Play or the App Store. In addition to the applications, these stores provide the users of mobile computing devices with an opportunity to familiarize themselves with a description of a particular application, view screen shots of the application, evaluate it and leave a feedback.
[0003] There are a number of applications designed to restrict the use of the device on which they are installed. Such applications include, for example, applications of "parental control" type, such as Kaspersky Safe Kids, or KES for Android. In general case, such restrictive applications are designed so that the user of the device, such as a child, cannot use game applications too long, or visit certain sites, for example. The restrictive nature of such applications is such that the user of a mobile device having limited, restricted capabilities /permissions (e.g., restrictions on access to certain websites or applications) is not satisfied with the presence of such a restrictive application on his/her computing device. Accordingly, such dissatisfied users may submit punitive negative feedback in the application stores, which has an unfairly negative impact on the other users trusting such an application. The negative feedback from a user having restricted capabilities (meaning in the present case the capabilities of using the computing device) might only indicate about how the restrictive application handles its task well. It is important to note that the capability of evaluating such an application in the applications store should not be available to a user who is restricted and dissatisfied with the application, but rather to a person who installs (or initiates the installing of) the restrictive application (for example, in the case of the Kaspersky Safe Kids application, this is the parent of the child who is using the device, whereas the capabilities of the child using the device are in fact restricted by the application).
[0004] Various methods are used to prevent unfair evaluations having a negative impact on the trust placed in applications, including methods which analyze the nature of a change in evaluations: whether it is similar to the evaluations produced using bot nets or not. Although these methods are aimed at solving certain problems in the area of identifying unfair evaluations, they do not solve the problem of preventing such evaluations or solve it inefficiently. Accordingly, there is a need for improvements in this area of technology.
SUMMARY
[0005] Disclosed are systems and methods of preventing unfair evaluations of applications by users by means of blocking access to the elements of the application page interface in an applications store to unauthenticated users of a computing device and allowing access to the application page interface when user's authentication data satisfy unblocking conditions.
[0006] In one example, a method for blocking access to interface elements of a page of an application in an applications store comprises: executing a restrictive application that restricts use of a computing device; determining that a page of the application in the application store is being presented on a display of the computing device during execution of the restrictive application; blocking, by the restrictive application, access to one or more interface elements of the page of the application in the applications store; obtaining authentication data associated with an authorized user; and responsive to determining that the obtained authentication data satisfies one or more conditions for unblocking, providing access, by the restrictive application, to the interface elements of the page of the application in the applications store.
[0007] In one example, determining that the page of the application in the application is being presented on the display of the computing device further comprises: receiving data from an operating system of the computing device upon occurrence of an event associated with an accessibility API of the operating system, wherein the received data comprises data related to a graphical user interface of the computing device; and applying the received data to one or more heuristic rules.
[0008] In one example, determining that the page of the application in the application is being presented on the display of the computing device further comprises: matching a name of the application on the page to a pre-determined list of restrictive applications selected to prevent punitive evaluations against the restrictive applications.
[0009] In one example, blocking access to the interface elements of the page of the application in the applications store further comprises: blocking access to a control element configured to submit an evaluation related to the application in the application store.
[0010] In one example, blocking access to the interface elements of the page of the application in the applications store further comprises: generating a blocking user interface element in a foreground of the interface elements of the page of the application in the applications.
[0011] In one example, the application whose page is being displayed to the user is the restrictive application executing on the computing device.
[0012] In one example, the page of the application contains at least one of a name of the application and a rating of the application.
[0013] In one example, the applications store comprises a remote server for distributing applications for an operating system of the computing device and having a separate page corresponding to each application.
[0014] In one example, a system for blocking access to interface elements of a page of an application in an applications store comprises: a computing device having a display; an intercept module configured to determine that a page of the application in the application store is being presented on the display during execution of a restrictive application configure to restrict use of the computing device; and a blocking module configured to: block access to one or more interface elements of the page of the application in the applications store; obtain authentication data associated with an authorized user; and responsive to determining that the obtained authentication data satisfies one or more conditions for unblocking, provide access to the interface elements of the page of the application in the applications store.
[0015] The above simplified summary of example examples of embodiments serves to provide a basic understanding of the present disclosure. This summary is not an extensive overview of all contemplated embodiments, and is intended to neither identify key or critical elements of all embodiments nor delineate the scope of any or all embodiments of the present disclosure. Its sole purpose is to present one or more embodiments in a simplified form as a prelude to the more detailed description of the disclosure that follows. To the accomplishment of the foregoing, the one or more embodiments of the present disclosure include the features described and exemplarily pointed out in the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The accompanying drawings, which are incorporated into and constitute a part of this specification, illustrate one or more example embodiments of the present disclosure and, together with the detailed description, serve to explain their principles and implementations.
Fig. 1 illustrates an example of a system of preventing unfair evaluations of applications by users.
Fig. 2 illustrates an example of a method of preventing unfair evaluations of applications by users.
Fig. 3 illustrates an example of a general-purpose computer system enabling the implementation of disclosed systems and methods of preventing unfair evaluations of applications by users.
DETAILED DESCRIPTION
[0017] Example embodiments are described herein in the context of a system, method and computer program product of preventing unfair evaluations of applications by users of mobile devices. Those of ordinary skill in the art will realize that the following description is illustrative only and is not intended to be in any way limiting. Other embodiments will readily suggest themselves to those skilled in the art having the benefit of this disclosure. Reference will now be made in detail to implementations of the example embodiments as illustrated in the accompanying drawings. The same reference indicators will be used to the extent possible throughout the drawings and the following description to refer to the same or like items.
[0018] The following terms will be used throughout this disclosure:
Authentication data includes data used for the authentication of the user of a mobile computing device. The authentication data is at least a password, a gesture (or lock pattern), entered by means of a touchscreen, a voice command or any other information which allows an identification of the user of the computing device (and which can also be entered using the entry devices/interfaces of the mobile computing device).
[0019] An applications store may include a remote server for the distribution of at least applications for the Android, iOS and Windows Phone OS, one application (or group of applications) corresponding to a separate page in the applications store which can be displayed on the computing device (for example, a web page corresponding to the application which can be displayed by an Internet browser on the computing device, or a page of an application which can be displayed in the application for access to the applications store). Examples of applications stores are: Google Play, App Store, Windows Store and others. The page of the application contains at least: the name of the application, the rating of the application, the name of the developer of the application (or the owner of the application), information on age limits for the application (age category), and also the category of the application ("sports", "business", "finance", etc.). The page of the application can furthermore display a description of the corresponding application, and also the number of downloads of the application from the remote server onto mobile computing devices.
[0020] A restrictive application may include an application which restricts the possibility of use of the computing device on which it is running in any way. For example, the restrictive application may block access to remote network resources, block access to certain websites, or block execution of certain other applications installed on the computing device. In another example, the restrictive application may restrict an amount of time spent on the device in a single session or over a certain time period. An example of such an application is Kaspersky Safe Kids or KES for Android.
[0021] Fig. 1 illustrates an example of a system of preventing unfair evaluations of applications by users by means of blocking access to the interface elements of the page of an application in the applications store. The system
100 includes a computing device
110 (e.g., a smartphone, a table, a PC), an operating system (OS)
102 of the computing device
110, and a restrictive application
115 (e.g., security application), which may include, but not limited to an intercept module
120 and a blocking module
130. In one example, the restrictive application
115 may be installed on the computing device
110. In another example, the restrictive application
115 may be component of an application store
142 run from a web server
140 (shown in Fig. 1 as a restrictive application
115A in a dashed outline).
[0022] In one example, the intercept module
120 may be configured to determine whether a page
114 of an application in the applications store
142 (hereinafter for convenience being called the "application page
114") is being displayed on a screen of the computing device
110. In some examples, the page
114 of the application in the applications store
142 is considered displayed on the screen if the page is part of a graphical user interface rendered and displayed by the computing device
110. Said application page
114 can be displayed on the screen of the computing device
110 with the aid, for example, of an application for access to the applications store - for the operating systems of the Android family such applications can be the Android Market or Play Market applications. In another example, any other software installed on the computing device
110 and able to display web pages is used to display the application page. In a particular instance, the intercept module
120 determines the fact of the displaying on the screen of the computing device
110 of the application page from the applications store in two steps. In another particular instance, the first step, described below, may be omitted.
[0023] In the first step, the intercept module
120 determines that there is being displayed on the screen of the computing device an application which is able to display the application pages. In one example, the determination is done in the event that the name of the process (or the package name) whose window (or activity in the Android OS) is displayed to the user (foreground activity) coincides with the name of one of the applications for access to the applications store. Examples have been given above, while the full list of applications for access to the applications store can be stored either in the intercept module
120 or in a database connected to the module
120 or on a remote server, in a particular case the developers of the restrictive applications may correct this list.
[0024] After determining that an application capable of displaying the application pages is being displayed on the screen of the computing device, the intercept module
120 in the second step determines that an application page is being displayed on the screen of the computing device
110 on the basis of the data being displayed on the screen of the computing device. The intercept module
120 uses an accessibility application programming interface (Accessibility API) in order to obtain the data being displayed on the screen of the computing device.
[0025] As used herein, an accessibility API is a set of functions exposed by an operating system
102 and designed for the creation of applications suitable for users with disabilities or limited abilities. Applications that support an accessibility API are configured to expose information relating to the user interface of the application including both control elements and data contained in the application so as to allow programmatic access (via the accessibility API) by an accessibility application. On the other side, applications that provide user interface enhancements to assist users with disabilities, for example, a screen reader application, can register with the OS as a system-level accessibility service to gain access to data relating to the graphical user interface being displayed on the screen of the computing device.
[0026] In order to obtain the data being displayed on the screen, the intercept module
120 receives from the OS
102 access rights for the processing of events (for example, by indicating the corresponding rights in the manifest, while said rights may be granted to the module
120, for example, during its installation on the computing device
110), which are described in the Android OS 102 in the context of an AccessibilityEvent structure and designed for processing on the part of agencies providing services to users with limited abilities (AccessibilityService). In a particular embodiment, the rights to the processing of said events are provided by the user of the computing device
110, in yet another particular embodimnent said user is the administrator of the device
110 or the user of the restrictive application (who has the rights to use this application, for example, knows the password for access to it). In an example, such events in the OS are events designated as follows in the OS (the list of events may be enlarged and is not restricted to the examples shown):
- TYPE_VIEW_CLICKED,
- TYPE_VIEW_LONG_CLICKED,
- TYPE_VIEW_FOCUSED,
- TYPE_VIEW_SELECTED,
- TYPE_VIEW_SCROLLED.
[0027] Upon occurrence of one of the above-mentioned events in the OS, the operating system sends data describing the information being displayed on screen, such as the displayed text, to the registered system services, namely, the intercept module
120. In the general case, the intercept module
120 receives data from the OS which is formed by the operating system of the computing device
110 upon occurrence of the event designed for processing by accessibility services for providing services to users with limited abilities (AccessibilityService). In a particular instance, such data is a text representation of the information being displayed on the screen of the computing device
110 - both text and certain pictograms. In one example, the aforementioned data also contains the name of the event (one of the aforementioned names of type "TYPE_VIEW..."), the name of the application during whose working one of the aforementioned events occurred, and also the name of the class (Class Name) of the interface element of the working application (such as "android.widget.ImageView" or "ImageView"), where the aforesaid interface element is connected to the event which has occurred (for example, for the event TYPE_VIEW_CLICKED such elements might be buttons, while the connected events and elements are represented in the class description AccessibilityEvent for OS); in the general case, the interface element is connected to the event if the interaction of the user with the mentioned element (such as pressing) generates said event (in a particular case, with the help of the OS means). It should be noted that, in some example, the interface elements of the application are at least a button and a text field. In yet another example, said data also contains attributes of the interface element related to the event which has occurred (for example, the text contained in the element or a full list of attributes provided by the operating system).
[0028] The intercept module
120 may use the aforementioned data (hereinafter, "Data") obtained from the OS to determine that the application page is being displayed on the screen of the computing device
110. In one example, the intercept module 120 may use one or more heuristic rules applicable to the Data to make this determination. For example, if the Data contains attributes of the interface elements, among the attributes there being the names of applications from a pre-determined list of applications, then the intercept module
120 determines (detects, acknowledges) that the application page is being shown on the display of the computing device
110. In another example of a heuristic rule, if the Data contains attributes of the interface elements, among the attributes there being the names of applications from a pre-determined list of applications, the names being attributes of interface elements whose class is one of: "Button", "ImageView", "TextView", then the intercept module
120 determines that the application page is being shown on the display of the computing device
110.
[0029] In another exemplary use of a heuristic, if the Data contains attributes of the interface elements, among the attributes there being the names of applications from a previously organized list of applications, and also the names of the developers from a pre-determined list of developers, while said names are attributes of interface elements whose class is one of: "Button", "ImageView", "TextView", then the intercept module
120 determines that the application page is being shown on the display of the computing device
110.
[0030] In another exemplary heuristic rule, if the Data contains attributes of the interface elements, among the attributes there being the names of applications from a pre-determined list of applications, and also the names of the developers from a pre-determined list of developers, while said names are attributes of interface elements whose class is one of: "Button", "ImageView", "TextView", and also the Data contains the name of an event connected to one of the above-enumerated interface elements, the name of the event being one of TYPE_VIEW_CLICKED, TYPE_VIEW_SCROLLED, then the intercept module
120 determines that the application page is being shown on the display of the computing device
110;
[0031] In one example, there is added to the above-described rules a condition whereby the intercept module
120 does not determine that an application page is being shown on the display of the computing device
110 if the Data contains attributes of the interface elements, among the attributes being names of applications from a pre-determined list of applications, and these names are attributes of interface elements whose class is "SearchBox".
[0032] The pre-determined list of applications (and also the pre-determined list of developers) can be organized by a specialist in information technology or provided by a remote server (not shown in
Fig. 1) and handed over to the intercept module
120. In one example, the pre-determined list of applications contains at least the names of the restrictive applications, so that the intercept module
120 determines the displaying on the screen of the computing device of the page of a restrictive application in the applications store. In one example, the intercept module
120 determines that a page is being shown on the display of the computing device
110 if the conditions of at least two of the aforementioned heuristic rules are met. After determining the showing of the application page on the display of the computing device
110, the intercept module
120 may send a corresponding notification of this determination to the blocking module
130.
[0033] The blocking module
130 may be configured to block access to one or more interface elements of the application page
114 being shown on the screen of the computing device
110, to obtain authentication data entered at least with the help of a
n input device of the computing device
110, and also to grant access to the interface elements of the application page being shown on the screen of the computing device
110, for example in the case when the access was previously blocked by the blocking module
130.
[0034] In one example, the blocking module
130 may block access (for example, from a user) to interface elements
117 of an application page by placing in the foreground one or more interface elements (such as those belonging to another Activity in the Android OS) which do not allow the use of the interface elements of the application page (e.g., by covering them). That is, the covering interface elements may prevent a user from knowing the interface elements of the application
114 are available; and even if the user attempted to interact with the underlying interface elements, the foreground interface elements are configured and arranged in a manner that would capture user input according to the layering principles of a graphical user interface of the OS
102. In some examples, such elements
117 on the application page (which are covered) may be text fields for writing comments on the corresponding application or interface elements for entering an evaluation of the application, such as buttons or pictograms (e.g., stars) corresponding to an evaluation from 1 to 5 for the application.
[0035] In one example, the blocking module
130, in addition to the aforementioned blocking, may be configured to restore access to the blocked user interface elements based on an authorization process performed by the user. The blocking module
130 may place on the screen of the computing device
110 at least an interface element (such as a text field) for entering authentication data. In another example, the interface element does not require displaying on the screen of the computing device and the blocking module
130 reads the data entered with the aid of the
input devices of the computing device
110 (such as gestures entered with the aid of a touchscreen). The blocking module
130 receives the authentication data by one of the aforementioned methods (either with the use of an interface element, or from at least one of the
input devices of the computing device
110). In one example of the present disclosure, the authentication data is entered by the user of the computing device
110.
[0036] After obtaining the authentication data, the blocking module
130 is able to provide access to the interface elements of the application page. In some examples, access is provided by removing from the foreground the interface elements (previously added, for example, the aforementioned activity) which previously did not allow the use of (i.e., blocked) the interface elements
117 of the application page. In one example, the blocking module
130 provides access to the interface elements
117 of the application page responsive to determining that the authentication data entered satisfies at least one of the conditions for unblocking, otherwise the blocking module
130 does not provide access to the control elements on the applications page. An unblocking condition can be at least:
- the authentication data entered matches up with the password for unblocking;
- the authentication data entered matches up with the gesture for unblocking;
- the authentication data entered matches up with the voice command for unblocking.
[0037] The password, gesture or command for unblocking can be stored in the blocking module 130, and can also be changed by an appropriate command from outside, for example, from the restrictive application, such as Kaspersky Safe Kids, or from the administrator of the computing device
110. In some examples, the password, gesture or command for unblocking concurs with the corresponding password, gesture or command for access to the restrictive application (such as Kaspersky Safe Kids).
[0038] Fig. 2 illustrates an example of method
200 of preventing punitive evaluations of applications by users by blocking access to interface elements of an application page in an applications store. A computing device executes a restrictive application
115 that restricts use of a computing device. The applications store may be executing on a remote server for distributing applications for an operating system of the computing device and having a separate page corresponding to each application.
[0039] In step
201, the intercept module
120 determines that the application page is being shown on the display of the computing device
110 during execution of the restrictive application. In some examples, the page of the application contains at least one of a name of the application and a rating of the application In some examples, the application whose page is being displayed to the user is the restrictive application executing on the computing device. In some examples, the intercept module
120 matches a name of the application on the page to a pre-determined list of restrictive applications selected to prevent punitive evaluations against the restrictive applications.
[0040] The intercept module
120 may determine that the application page is being shown on the screen of the computing device
110 on the basis of data which is sent to the device
120, having been registered as a system accessibility service providing services to users with disabilities or limited abilities, from the OS upon occurrence of a number of events. In some examples, the intercept module
120 receives data from the OS
102 of the computing device upon occurrence of an event associated with an accessibility API of the
OS. This received data includes data related to a graphical user interface of the computing device. In one example, the determination that the application page is being shown on the display of the computing device
110 is done with the aid of heuristic rules (e.g., which can be applied to the received data).
[0041] If the intercept module
120 has determined that the application page is being shown on the screen of the computing device
110, a corresponding notification is sent by the intercept module
120 to the blocking module
130. In step
202 the blocking module
130 blocks access to the interface elements of the application page. In some examples, the blocking module
130 blocks access to a control element, such as a button or a text field, configured to submit an evaluation or a feedback rating related to the application in the application store. In some examples, the blocking module
130 generates a blocking user interface element in a foreground of the interface elements of the page of the application in the applications.
[0042] Next, in step
203, the blocking module
130 obtains authentication data entered at least with the aid of the
input devices of the computing device
110. If the authentication data meets the condition for unblocking, then in step
207 the blocking module
130 provides access to the interface elements of the application page. Otherwise, the blocking module
130 in step
206 denies access to the interface elements of the application page (access remains blocked as of step
202).
[0043] Fig. 3 is a diagram illustrating an example computer system on which systems and methods for preventing unfair evaluations of applications by users in accordance with an example of the invention. As shown, the computer system
20 (which may be a personal computer or a server) includes a central processing unit
21, a system memory
22 and a system bus
23 connecting the various system components, including the memory associated with the central processing unit
21. As will be appreciated by those of ordinary skill in the art, the system bus
23 may comprise a bus memory or bus memory controller, a peripheral bus, and a local bus that is able to interact with any other bus architecture. The system memory may include permanent memory (ROM)
24 and random-access memory (RAM)
25. The basic input/output system (BIOS)
26 may store the basic procedures for transfer of information between elements of the computer system
20, such as those at the time of loading the operating system with the use of the ROM
24.
[0044] The computer system
20, may also comprise a hard disk
27 for reading and writing data, a magnetic disk drive
28 for reading and writing on removable magnetic disks 29, and an optical drive
30 for reading and writing removable optical disks
31, such as CD-ROM, DVD-ROM and other optical media. The hard disk
27, the magnetic disk drive
28, and the optical drive
30 are connected to the system bus
23 across the hard disk interface
32, the magnetic disk interface
33 and the optical drive interface
34, respectively. The drives and the corresponding computer information media are power-independent modules for storage of computer instructions, data structures, program modules and other data of the computer system
20.
[0045] An example comprises a system that uses a hard disk
27, a removable magnetic disk
29 and a removable optical disk
31 connected to the system bus
23 via the controller
55. It will be understood by those of ordinary skill in the art that any type of media
56 that is able to store data in a form readable by a computer (solid state drives, flash memory cards, digital disks, random-access memory (RAM) and so on) may also be utilized.
[0046] The computer system
20 has a file system
36, in which the operating system
35, may be stored, as well as additional program applications
37, other program modules
38, and program data
39. A user of the computer system
20 may enter commands and information using keyboard 40, mouse 42, or any other input device known to those of ordinary skill in the art, such as, but not limited to, a microphone, joystick, game controller, scanner,
etc.. Such input devices typically plug into the computer system
20 through a serial port
46, which in turn is connected to the system bus, but those of ordinary skill in the art will appreciate that input devices may be also be connected in other ways, such as, without limitation, via a parallel port, a game port, or a universal serial bus (USB). A monitor
47 or other type of display device may also be connected to the system bus
23 across an interface, such as a video adapter
48. In addition to the monitor
47, the personal computer may be equipped with other peripheral output devices (not shown), such as loudspeakers, a printer,
etc.
[0047] Computer system
20 may operate in a network environment, using a network connection to one or more remote computers
49. The remote computer (or computers)
49 may be local computer workstations or servers comprising most or all of the aforementioned elements in describing the nature of a computer system
20. Other devices may also be present in the computer network, such as, but not limited to, routers, network stations, peer devices or other network nodes.
[0048] Network connections can form a local-area computer network (LAN)
50 and a wide-area computer network (WAN). Such networks are used in corporate computer networks and internal company networks, and they generally have access to the Internet. In LAN or WAN networks, the personal computer
20 is connected to the local-area network
50 across a network adapter or network interface
51. When networks are used, the computer system
20 may employ a modem
54 or other modules well known to those of ordinary skill in the art that enable communications with a wide-area computer network such as the Internet. The modem
54, which may be an internal or external device, may be connected to the system bus
23 by a serial port
46. It will be appreciated by those of ordinary skill in the art that said network connections are non-limiting examples of numerous well-understood ways of establishing a connection by one computer to another using communication modules.
[0049] In various examples, the systems and methods described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the methods may be stored as one or more instructions or code on a non-transitory computer-readable medium. Computer-readable medium includes data storage. By way of example, and not limitation, such computer-readable medium can comprise RAM, ROM, EEPROM, CD-ROM, Flash memory or other types of electric, magnetic, or optical storage medium, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a processor of a general purpose computer.
[0050] In various examples, the systems and methods described in the present disclosure can be addressed in terms of modules. The term "module" as used herein refers to a real-world device, component, or arrangement of components implemented using hardware, such as by an application specific integrated circuit (ASIC) or field-programmable gate array (FPGA), for example, or as a combination of hardware and software, such as by a microprocessor system and a set of instructions to implement the module's functionality, as well as those based on neuromorphic chips (neurosynaptic chips), which (while being executed) transform the microprocessor system into a special-purpose device. A module may also be implemented as a combination of the two, with certain functions facilitated by hardware alone, and other functions facilitated by a combination of hardware and software. In certain implementations, at least a portion, and in some cases, all, of a module may be executed on the processor of a general purpose computer (such as the one described in greater detail in Fig. 3 above). Accordingly, each module may be realized in a variety of suitable configurations, and should not be limited to any particular implementation exemplified herein.
[0051] In the interest of clarity, not all of the routine features of the embodiments of the invention are disclosed herein. It would be appreciated that in the development of any actual implementation of the present disclosure, numerous implementation-specific decisions must be made in order to achieve the developer's specific goals, and these specific goals will vary for different implementations and different developers. It is understood that such a development effort might be complex and time-consuming, but would nevertheless be a routine undertaking of engineering for those of ordinary skill in the art, having the benefit of this disclosure.
[0052] Furthermore, it is to be understood that the phraseology or terminology used herein is for the purpose of description and not of restriction, such that the terminology or phraseology of the present specification is to be interpreted by the skilled in the art in light of the teachings and guidance presented herein, in combination with the knowledge of the skilled in the relevant art(s). Moreover, it is not intended for any term in the specification or claims to be ascribed an uncommon or special meaning unless explicitly set forth as such. The various embodiments of the invention disclosed herein encompass present and future known equivalents to the known modules referred to herein by way of illustration. Moreover, while embodiments and applications have been shown and described, it would be apparent to those skilled in the art having the benefit of this disclosure that many more modifications than mentioned above are possible without departing from the inventive concepts disclosed herein.