For each component that the user wants to analyze, a proxy component is created. The proxy component shares the same interface as the actual component. When the application is composed and executed, the proxy is placed directly ``in front'' of the actual component. Since the proxy implements the same interface as the component, the proxy intercepts all of the method invocations for the component. In other words, the proxy uses and provides the same types of ports that the actual component provides. In this manner, the proxy is able to snoop the method invocation on the Provides Port, and then forward the method invocation to the component on the Uses Port. In addition, the proxy also uses a Monitor port to make measurements. If the method is one that the user wants to measure, monitoring is started before the method invocation is forwarded and stopped afterward. When the monitoring is started, parameters that influence the method's performance are sent to the Mastermind component. These parameters must be selected by someone with a knowledge of the algorithm implemented in the component. For example, for a routine that performs some simple processing on each index of an array of numbers, the performance parameter would most likely be the size of the array. Creating a proxy from a component's header file is relatively straight-forward. Currently, proxies are created manually with the help of a few scripts, but it is not difficult to envision proxy creation being fully automated.