Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
IN-ROOM DETERMINATIONS
Document Type and Number:
WIPO Patent Application WO/2023/027711
Kind Code:
A1
Abstract:
In an example, the disclosure includes a computer-readable medium storing instructions. When executed by a processor of a computing device, the instructions cause the processor to induce, via an actuator, a mechanical vibration onto a surface, the mechanical vibration encoded with data, receive a data transmission from a client device via a communication interface of the computing device, the data transmission including detected data, and, in response to determining that the detected data matches the encoded data, modify a value of an in-room designator of the client device to indicate that the client device is located in a same room as the computing device.

Inventors:
LAGNADO ISAAC (US)
CAMPBELL ROBERT (US)
STEVEN CHRISTOPHER ALLAN (US)
Application Number:
PCT/US2021/047767
Publication Date:
March 02, 2023
Filing Date:
August 26, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
International Classes:
H04L65/403; G01S3/80
Domestic Patent References:
WO2021086729A12021-05-06
Foreign References:
US20140260642A12014-09-18
US20160277125A12016-09-22
EP1750423A12007-02-07
Attorney, Agent or Firm:
ANDERSON, Maria C. et al. (US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1 . A computer-readable medium storing instructions which, when executed by a processor of a computing device, cause the processor to: induce, via an actuator, a mechanical vibration onto a surface, the mechanical vibration encoded with data; receive a data transmission from a client device via a communication interface of the computing device, the data transmission including detected data; and in response to determining that the detected data matches the encoded data, modify a value of an in-room designator of the client device to indicate that the client device is located in a same room as the computing device.

2. The computer-readable medium of claim 1 , wherein the instructions when executed further cause the processor to, responsive to modifying the value of the in-room designator of the client device to indicate that the client device is located in the same room as the computing device, transmit data to the client device via the communication interface.

3. The computer-readable medium of claim 1 , wherein the instructions when executed further cause the processor to, responsive to modifying the value of the in-room designator of the client device to indicate that the client device is located in the same room as the computing device, grant control privileges of the computing device to the client device.

4. The computer-readable medium of claim 1 , wherein the instructions when executed further cause the processor to, responsive to modifying the value of the in-room designator of the client device to indicate that the client device is located in the same room as the computing device, restrict functionality of the client device.

5. The computer-readable medium of claim 1 , wherein the encoded data is a code unique to the room in which the computing device is located.

6. An electronic device, comprising: a processor to: induce, via an actuator, a mechanical vibration onto a surface, the mechanical vibration including a first code unique to a particular room; receive a signal from a client device, the signal including a second code as detected by an accelerometer of the client device; determine whether the second code matches the first code; determine that the client device is located in the particular room responsive to the second code matching the first code; and in response to determining that the client device is located in the particular room, modify a value of an in-room designator of the client device to indicate that the client device is located in the particular room.

7. The electronic device of claim 6, wherein the first code is a changeable rotating code that changes after a programmed amount of time.

8. The electronic device of claim 6, wherein, in response to determining that the client device is located in the particular room, the processor is to transmit an instruction to the client device.

9. The electronic device of claim 8, wherein the instruction is to cause the client device to access a network resource.

10. The electronic device of claim 8, wherein the instruction is to cause functionality of the client device to be modified. 16

11. A computer-readable medium storing instructions which, when executed by a processor of a computing device, cause the processor to: detect, via an accelerometer of the computing device, a vibration induced onto a surface by a host device; decode data encoded in the detected vibration; compare the decoded data to programmed data; in response to the decoded data including the programmed data, determine that the host device is in a same room as the computing device; and in response to determining that the host device is in the same room as the computing device, access, via the computing device, a network location.

12. The computer-readable medium of claim 11 , wherein the data is a code unique to the room in which the computing device is located.

13. The computer-readable medium of claim 11 , wherein the network location is indicated in the decoded data.

14. The computer-readable medium of claim 11 , wherein the network location is the host device.

15. The computer-readable medium of claim 11 , wherein the instructions cause the processor to transmit a notification that the decoded data includes the programmed data to the host device in response to the decoded data including the programmed data.

Description:
IN-ROOM DETERMINATIONS

BACKGROUND

[0001] Users sometimes congregate in a conference room, office, or other room for various functions. These users may bring with them various user devices. In certain circumstances it can be useful to determine which users, or user devices, are located in the room.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Various examples will be described below referring to the following figures: [0003] FIG. 1 is a diagram of a table in accordance with various examples.

[0004] FIG. 2 is block diagram of a computing device for performing vibrationbased in-room determinations, in accordance with various examples.

[0005] FIG. 3 is a diagram of a computer-readable medium storing executable code for performing vibration-based in-room determinations, in accordance with various examples.

[0006] FIG. 4 is a diagram of a computer-readable medium storing executable code for performing vibration-based in-room determinations, in accordance with various examples.

[0007] FIG.5 is a diagram of a computer-readable medium storing executable code for performing vibration-based in-room determinations, in accordance with various examples.

DETAILED DESCRIPTION

[0008] In some circumstances, it is beneficial or useful to know the persons who are present in a given location. In some examples, the presence of such persons (or “users”) is determinable using their devices, such as smartphones or laptop computers. For example, the presence of a user device of a user in the given location is used as a proxy for determining presence of the user in the given location. Radio frequency approaches exist for detecting the presence of user devices in a given area, but these approaches have various disadvantages that produce inaccurate results.

[0009] This disclosure describes a vibrations-based in-room determination or detection that indicates the presence of user devices (and, by extension, the users who use those devices) in a given area based on mechanical vibrations. For example, a user places a user device (e.g., a client device) on the same surface (e.g., a conference room table) as a host device. In some examples, the host device controls an actuator to induce mechanical vibration to the surface. The client device detects the mechanical vibration via an accelerometer.

[0010] Based on the detected vibration, in some examples, the client device performs an action. For example, the client device acts based on data that has been encoded in the vibration by the host device. In various examples, the data is, or includes, a Uniform Resource Locator (URL), an Internet Protocol (IP) address, an instruction for the client device, or any other suitable form of data on which the client device is capable of acting. In another example, a code is encoded in the vibration. In an example, the client device compares the code received in the detected vibration to a programmed code. Responsive to the received code and the programmed code matching, the client device performs programmed action, such as joining a domain, modifying a setting of the client device, disabling or enabling a function of the client device, or any other suitable function.

[0011] In another example, the client device transmits the received code to the host device via any suitable communication medium or channel. Responsive to receipt of the code received from the client device, the host device determines whether the code received from the client device matches the code encoded into the vibration by the host device. Responsive to the received code and the encoded code matching, the host device performs an action. For example, the host device adds the client device to a domain, allocates an “in-room” parameter to the client device, permits the client device to control the host device, grants the client device certain privileges, transmits further instruction to the client device via any suitable communication medium or channel, or take any other suitable action based on determining that the client device is in the same location (e.g., the same room) as the host device.

[0012] FIG. 1 is a diagram 100 of a table in accordance with various examples. The diagram 100 is a perspective view of a top surface 101 of the table. In some examples, a computing device 102, a computing device 104, and a computing device 106 are positioned on and in contact with the table. In some examples, the computing device 102 is referred to as a host device. In some examples, the computing device 104 and the computing device 106 are each be referred to as client devices. While three computing devices are shown in FIG. 1 for the sake of description, in actual implementation any number of computing devices may be present.

[0013] The computing devices 102, 104, 106 are coupled indirectly, such as by each being in contact with the surface 101. Alternatively, the computing devices 102, 104, 106 may also be indirectly coupled via any suitable combination of wired or wireless network couplings, regardless of whether a network device intermediary (not shown) exists between pairs of the computing devices 102, 104, 106.

[0014] In some examples, the computing device 102 is assigned to a room in which the table is located. For example, the computing device 102 is a conference room computer or device that is located in a conference room and is to control operation of devices (not shown) in the conference room, such as a display device (e.g., projector, projection screen, television, digital screen, etc.), speakers, a camera, a microphone, etc. In some examples, the computing device 102 grants certain privileges to users located in the conference room, or block users in the conference room from performing certain functions. For example, the computing device 102 blocks users from initiating a recording function while located in the conference room or permits users to control some aspects of the computing device 102 or other devices in the conference room while the users are located in the conference room. In other examples, the computing device 102 takes attendance, determining which users are located in the conference room at a given time (such as during an identified time for a meeting or other gathering). For example, determining the attendance in a conference room during a meeting indicates to remote users which users are present in the conference room but are not in view of a camera or are not recognizable.

[0015] As described above, network-based methods of identifying users located in the conference room may have certain disadvantages. For example, wireless or ultrasonic signals penetrate walls or other boundaries of some conference rooms, leading to incorrect determinations of whether or not a user is located in the conference room when such determination is made based on the wireless signals. To increase accuracy of determining whether a user is located in the conference room, a physical medium is used to determine whether the user is present. For example, the computing device 102 induces vibrations onto the surface 101. In some examples, the computing device 102 induces the vibrations onto the surface 101 via an actuator (not shown in FIG. 1 ). In some examples, the actuator is an internal component of the computing device 102. In some examples, the actuator is an external component to which the computing device 102 is adapted to be coupled.

[0016] In various examples, the computing device 102 controls the actuator to induce the vibrations onto the surface 101 according to any suitable methodology. For example, the computing device 102 controls the actuator to induce the vibrations (illustrated as curved broken lines in FIG. 1 ) onto the surface 101 according to Morse code or any other suitable data encoding methodology or mapping that equates alphanumeric characters to vibrations or vibration patterns. The computing device 102 includes, or encodes, any suitable data in the vibrations. In some examples, the data is a code. The code is unique, for a particular period in time, to the conference room or is unique, for the particular period in time, to the computing device 102. In some examples, the code changes or rotates (e.g., be a changeable rotating code) with any suitable programmed periodicity or timing such that at a first time, a first code corresponds to the conference room, and at a second time, a second code corresponds to the conference room. In other examples, the data includes, either separately or in combination with the code, a network address, an instruction, or other information.

[0017] The computing device 104 detects the vibrations induced onto the surface 101 , such as via an accelerometer (not shown in FIG. 1 ) of the computing device 104. Responsive to detecting the vibrations, the computing device 104 decodes the vibration data to obtain the data induced by the computing device 102 onto the surface 101 as vibrations (e.g., the data encoded into the vibrations by the computing device 102). Responsive to decoding and obtaining the data, the computing device 104 performs an action based on the data.

[0018] In an example, the computing device 104 transmits the data to the computing device 102 via a communication interface, such as a wireless or wired network coupling, an infrared data transmission, or any other suitable transmission medium other than inducing vibrations onto the surface 101. In such an example, the computing device 102 compares the data received from the computing device 104 to the data encoded into the vibrations by the computing device 102 to determine whether the encoded data and the received data match. Responsive to the encoded data and the received data matching, in some examples, the computing device 102 modifies a value of an in-room designator of, or associated with, the computing device 104 to indicate that the computing device 104 is located in a same room as the computing device 102.

[0019] In some examples, responsive to determining that the computing device 104 is located in the same room as the computing device 102, the computing device 102 grants certain privileges to the computing device 104, limits certain functionality of the computing device 104, or a combination thereof. For example, the computing device 102 grants the computing device 104 control privileges to modify or adjust some functionalities of the computing device 102 or functionalities of some devices coupled to, or under the control of, the computing device 102. The computing device 102 limits functionality of the computing device 104, such as blocking the opening of certain applications or accessing of certain services or functions otherwise available to the computing device 104 during some times in which the computing device 104 is not located in the same room as the computing device 102. In some examples, the computing device 102 also compels certain operations of the computing device 104, such as causing a particular application to launch on the computing device 104 or causing a certain application to stay in focus, or forefront, on a display of, or coupled to, the computing device 104. The computing device 102 achieves this control, in some examples, by transmitting additional data, such as instructions, commands, or other control data, to the computing device 104 responsive to determining that the computing device 104 is located in the same room as the computing device 102.

[0020] In another example, the computing device 104 compares the decoded data to programmed data stored by, or otherwise accessible to, the computing device 104. In an example, the programmed data is an authentication code that authenticates the computing device 102 to the computing device 104. In another example, the programmed data is a code specific to the room in which the computing device 102 and the computing device 104 are located. Responsive to determining that the decoded data matches the programmed data, the computing device 104 performs various functions. For example, the computing device 104 may modify a value of an in-room designator of, or associated with, the computing device 104 to indicate that the computing device 104 is located in a same room as the computing device 102. In another example, the computing device 104 accesses a network location or address responsive to determining that the decoded data matches the programmed data. In another example, the computing device 104 performs an action indicated in the decoded data (such as in a payload of a data element) responsive to determining that a portion of the decoded data (e.g., such as a header of the data element) matches the programmed data. In another example, the computing device 104 transmits a notification to the computing device 102 responsive to determining that the decoded data matches the programmed data, and the computing device 102 may take any suitable action in response, such as modifying an in-room designator of, or associated with, the computing device 104, transmitting additional data to the computing device 104, or a combination thereof.

[0021] In another example, the decoded data includes an instruction for the computing device 104 to perform and the computing device 104 performs the action responsive to decoding the data. In various examples, the instruction is for the computing device 104 to access a network resource, location, or address, to register its location with a database, to enable or disable certain of its functionality, or to execute any other function or service accessible to the computing device 104. [0022] In some examples, the computing device 106 may also detect the vibrations induced onto the surface 101 via an accelerometer (not shown) of the computing device 106. Responsive to detecting the vibrations, the computing device 106 decodes the vibration data to obtain the data induced by the computing device 102 onto the surface 101 as vibrations. Responsive to decoding and obtaining the data, the computing device 106 performs actions based on the data. In some examples, the actions performed by the computing device 106 (or the computing device 102 responsive to the decoding by the computing device 106) may be substantially similar to those described above with respect to the computing device 104, and such description is not repeated here with respect to the computing device 106.

[0023] In other examples, the computing device 106 performs other actions in place of, or in addition to, those described above with respect to the computing device 104. For example, the computing device 104 is a laptop or tablet computer device which is granted certain privileges responsive to a determination that the computing device 104 is located in the same room as the computing device 102. However, the computing device 106 is a smartphone device that is controlled to be in a silent state responsive to a determination that it is located in the same room as the computing device 102. Other examples include the computing device 106 being blocked from launching a phone application, launching a camera application, launching a recording application, or any other suitable restriction on, or compelling of, a function of the computing device 106. In this way, the computing device 104 and the computing device 106 (and other computing devices not shown) respond differently to, or be controlled to operate differently as a result of, determining that they are located in a same room as the computing device 102.

[0024] FIG. 2 is a block diagram of a computing device 200 in accordance with various examples. In some examples, the computing device 200 is suitable for implementation as any of the computing device 102, the computing device 104, or the computing device 106 of FIG. 1. In various examples, computing device 200 is any device capable of performing the functions disclosed herein, such as a server, a laptop computer, a notebook computer, a netbook computer, a tablet computer, a smartphone, a desktop computer, an all-in-one computer, a conference device (e.g., teleconference or videoconference), etc.

[0025] Computing device 200 is a device (e.g., an access point, an access point station, a router, a switch, a gateway, a bridge, a server, a client, a user-equipment, a mobile communications device, etc.) that transports data through a network, a system, a domain, or a combination thereof. The computing device 200 may provide services to other devices in a network or performs computational functions. In one example, the computing device 200 implements the vibrations based in-room determination of this disclosure, for example according to a computer program product.

[0026] The computing device 200 comprises downstream ports 210 coupled to a transceiver (Tx/Rx) 220, which is a transmitter, receiver, or combination thereof. The Tx/Rx 220 communicates data from other devices via the downstream ports 210. Similarly, the computing device 200 comprises another Tx/Rx 220 coupled to a plurality of upstream ports 240, where the Tx/Rx 220 communicates data from other computing devices via the upstream ports 240. In another example, the computing device 200 comprises antennas (not shown) coupled to the Tx/Rx 220. The Tx/Rx 220 communicates data from other computing or storage devices wirelessly via the antennas.

[0027] A processor 230 is coupled to the Tx/Rx 220 and is to perform, among other functions, vibrations based in-room determination according to the various examples of this disclosure. In an example, the processor 230 comprises multiple processing cores. The processor 230 is coupled to a memory 250, which functions as data stores, buffers, etc. The processor 230 may be implemented as a general processor or as part of application specific integrated circuits (ASICs), field- programmable gate arrays (FPGAs), digital signal processors (DSPs), or a combination thereof. Although illustrated as a single processor, the processor 230 is not so limited and may be implemented as multiple processors. The processor 230 further includes processing logic to execute a computer program product 260 that is to perform vibrations based in-room determination according to the various examples of this disclosure.

[0028] FIG. 2 also illustrates that a memory 250 is coupled to the processor 230 and is a non-transitory medium to store various types of data. The term “non- transitory” as used herein does not encompass transitory propagating signals. Memory 250 comprises memory devices including secondary storage, read-only memory (ROM), and random-access memory (RAM). The secondary storage comprises disk drives, optical drives, solid-state drives (SSDs), tape drives, or a combination thereof. The second storage is used for non-volatile storage of data and as an over-flow storage device if the RAM is not large enough to hold all working data. The secondary storage is used to store programs that are loaded into the RAM when such programs are selected for execution. The ROM is used to store instructions and perhaps data that are read during program execution. The ROM is a non-volatile memory device. The RAM is used to store volatile data, instructions, or a combination thereof.

[0029] In some examples, the memory 250 stores the instructions for carrying out the various examples described herein. For example, in some implementations the memory 250 comprises the computer program product 260, which is executed according by processor 230.

[0030] In some examples, the computing device 200 also includes an input/output (I/O) device 265. The I/O device 265 supports transmission of data from, or receipt of data by, the computing device 200. In some examples, when the computing device 200 implements the computing device 102 (i.e., the host device) of FIG. 1 , the I/O device 265 is a vibration motor, exciter, or resonance speaker. Thus, the actuator of computing device 102 is implemented as a vibration motor, exciter, or resonance speaker.

[0031] In some examples, when the computing device 200 implements the computing device 104 or the computing device 106 (i.e., the client device), the I/O device 265 is an accelerometer. While I/O device 265 is shown as an internal component of the computing device 200 in FIG. 2, it should be understood that I/O device 265 may alternatively be implemented as a device external to the computing device 200 where the device is connected to the computing device 200 to exchange data via a cable or a data connector.

[0032] By loading executable instructions onto the computing device 200, the computing device 200 is transformed in part into a particular machine or apparatus, for example, a vibrations based in-room determination device having the functionality taught by this disclosure. Functionality that can be implemented by loading executable code into a computer can be converted to a hardware implementation according to design rules. Decisions between implementing a concept in executable code versus hardware may hinge on considerations of stability of the design and number of units to be produced rather than any issues involved in translating from the executable code domain to the hardware domain. A design that is still subject to frequent change may be implemented in executable code, because re-spinning a hardware implementation is more expensive than re-spinning a software design. A design that is stable and will be produced in large volume may be implemented in hardware (e.g., in an ASIC) because for large production runs the hardware implementation can be less expensive than software implementations. Often a design is developed and tested in an executable code form and then later transformed, according to design rules, to an equivalent hardware implementation in an ASIC that hardwires the instructions of the executable code. In the same manner as a machine controlled by a new ASIC is a particular machine or apparatus, likewise a computer that has been loaded with executable instructions is viewable as a particular machine or apparatus.

[0033] FIG. 3 is a diagram of a computer-readable medium 300 storing executable code in accordance with various examples. In some examples, the computer-readable medium 300 is non-transitory in nature and the executable code is machine-executable. In some examples, the computer-readable medium is the memory 250 of the computing device 200 of FIG. 2. When executed by a processor, such as the processor 230 of FIG. 2, the executable code causes the processor to perform functions or operations. In some examples, the executable code is representable as instructions or a computer program product, such as the computer program product 260 of FIG. 2. In some examples, the executable code causes the processor to perform functions associated with vibrations based in- room determination, as described in this disclosure.

[0034] In some examples, instruction 302 causes the processor to induce a vibration onto a surface. In some examples, the processor is to control an actuator to induce the vibration onto the surface. The vibration is a mechanical, or physical vibration, inducted by the actuator via contact with the surface. The vibration is encoded with any suitable data, such as a code, a command, an address, an instruction, etc.

[0035] In some examples, instruction 304 causes the processor to receive a data transmission from a client device. In some examples, the data transmission is received from the client device via a communication interface of the computing device. The communication interface transmits the data transmission via a medium other than mechanical vibrations. In some examples, data transmission includes detected data, decoded by the client device from the vibrations after detection of the vibrations by the client device.

[0036] In some examples, instruction 306 causes the processor to, in response to determining that the detected data matches the encoded data, modify a value of an in-room designator of the client device. In some examples, modifying the value of the in-room designator of the client device indicates that the client device is located in a same room as the computing device. In some examples, the in-room designator is modified in a data store maintained by the processor or in a data store accessed remotely by the processor. In response to modifying the in-room designator of the client device (e.g., determining that the client device is located in a same room as the computing device), in some examples, the processor performs other actions related to the client device, such as described above herein.

[0037] FIG. 4 is a diagram of a computer-readable medium 400 storing executable code in accordance with various examples. In some examples, the computer-readable medium 400 is non-transitory in nature and the executable code is machine-executable. In some examples, the computer-readable medium is the memory 250 of the computing device 200 of FIG. 2. When executed by a processor, such as the processor 230 of FIG. 2, the executable code causes the processor to perform functions or operations. In some examples, the executable code is representable as instructions or a computer program product, such as the computer program product 260 of FIG. 2. In some examples, the executable code causes the processor to perform functions associated with vibrations based in- room determination, as described in this disclosure.

[0038] In some examples, instruction 402 causes the processor to induce a vibration onto a surface. In some examples, the processor is to control an actuator to induce the vibration onto the surface. The vibration is a mechanical, or physical vibration, inducted by the actuator via contact with the surface. The vibration is encoded with any suitable data, such as a code, a command, an address, an instruction, etc. In some examples, the data is, or includes, a first code unique to a particular room. [0039] In some examples, instruction 404 causes the processor to receive a signal from a client device. In some examples, the signal includes a second code as detected by the client device, such as via an accelerometer.

[0040] In some examples, instruction 406 causes the processor to determine whether the second code matches the first code.

[0041] In some examples, instruction 408 causes the processor to determine that the client device is located in the particular room responsive to the second code matching the first code. For example, the processor determines that the client device was in contact with the surface onto which the vibrations were induced and is therefore in a same room (e.g., the particular room) as a computing device that includes the processor.

[0042] In some examples, instruction 410 causes the processor to, in response to determining that the client device is located in the particular room, modify a value of an in-room designator of the client device to indicate that the client device is located in the particular room. In response to modifying the in-room designator of the client device (e.g., determining that the client device is located in the particular room), the processor performs other actions related to the client device, such as described above herein.

[0043] FIG. 5 is a diagram of a computer-readable medium 500 storing executable code in accordance with various examples. In some examples, the computer-readable medium 500 is non-transitory in nature and the executable code is machine-executable. In some examples, the computer-readable medium is the memory 250 of the computing device 200 of FIG. 2. When executed by a processor, such as the processor 230 of FIG. 2, the executable code causes the processor to perform functions or operations. In some examples, the executable code is representable as instructions or a computer program product, such as the computer program product 260 of FIG. 2. In some examples, the executable code causes the processor to perform functions associated with vibrations based in- room determination, as described in this disclosure.

[0044] In some examples, instruction 502 causes the processor to detect a vibration induced onto a surface. In some examples, the processor is to detect the vibration via an accelerometer. The vibration is a mechanical, or physical vibration, inducted onto the surface by a computing device, such as via an actuator. The vibration is encoded with any suitable data, such as a code, a command, an address, an instruction, etc.

[0045] In some examples, instruction 504 causes the processor to decode data encoded in the detected vibration. In some examples, the decoding is performed according to a programmed type of encoding expected by the processor.

[0046] In some examples, instruction 506 causes the processor to compare the decoded data to programmed data.

[0047] In some examples, instruction 508 causes the processor to, in response to the decoded data including the programmed data, determine that the host device is in a same room as computing device.

[0048] In some examples, instruction 510 causes the processor to in response to determining that the host device is in the same room as the computing device, access, via the computing device, a network location. In some examples, the network location is included in the encoded data. In other examples, the network location is determined based on the decoded data and a lookup table. In other examples, the network location is a programmed location to access in response to the decoded data matching the programmed data.

[0049] The above discussion is meant to be illustrative of the principles and various examples of the present disclosure. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.