Typically, specialized ICs known as encoders and decoders are used to take unprotected information such as button presses or switch closures and convey it efficiently and securely through free space. In the past, many of these components relied on a large number of addresses to increase uniqueness and decrease the potential for two devices to conflict with each other. However, an informed intruder will have no difficulty compromising such a system. With this in mind, devices employing more advanced techniques such as encryption and rolling code were developed. They provide a high degree of uniqueness and an improved level of security, but many of the devices remain vulnerable to attack and compromise.