Trustless Proxy

Implement a contract which creates a proxy for each user and assigns a default implementation address, the main thing to remember here is that the user must be the owner of the proxy which means that user can upgrade when they want and they will have to pay the gas fees but this allows the contract to be fully trustless.