1. A method of restructuring a user interface component of a first computer application, the method comprising: providing a second computer application; the second computer application dynamically injecting a functionality into a first layer in the user interface component of the first computer application; the second computer application communicating an event to a controlling process used in at least the first layer; and performing an action in the first layer based on the communicated event, wherein the second computer application uses the injecting and communicating to control operation of the first computer application, and wherein multi-directionally communicating processes are created by the second computer application by inserting application level repurposing communication protocols into the user interface component of the first computer application; wherein the repurposing communication protocols override communication protocols of the user interface component of a first computer application, thereby enabling the second computer application to perform an action in the first layer based on the communicated event through the repurposing communication protocols.