# Proxy

_This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the implementation behind the proxy, and it has to be specified by overriding the virtual {\_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {\_fallback} function, or to a different contract through the {\_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy._
