# Proxy ADO
AMP messages allow any user from any chain to execute a message in a smart contract, like you can execute splitter on osmosis from andromeda. However, most of the execution is done via kernel in a secure way and lacks some additional flexibility. Proxy ADO can act as a standard socket on all the chains and can define any arbitary messages (We will start more restricted approach and only allow Execute and Instantiate methods). Proxy ado provides flexibility to users to do anything they want on any chain with the proxy ado as their proxy on that chain.
## Functionality
Proxy ADO can be instantiated by any user on any chain as a proxy for his address. Once instantiated, this ado can be used as user identity on any chain and then do txs on behalf of user.
How it will behave?
Lets say a user want to create an app on osmosis, he can deploy a proxy ado on osmosis and allow andromeda address to be authorized address. Then from andromeda, user will trigger an instantiate msg to this proxy ado on osmosis and then the proxy ado will create this ado. This way, owner of app is proxy ado and later if user wants to give access to his osmosis address, he can add his osmosis address as authorized address to this proxy ado.
## Propose Structure
Admins - Permission like structure, multiple addresses. It should support cross chain address as thats most important use case.
Execute Msg - AndrAddr, Binary, Funds
Instantiate Msg - CodeId or AdoVersion, Binary, Admin, Label
Default Instantiate Config - Admin, Label and any other default config to keep msgs light weight
VFS Register - (In Order to handle any custom address user want to add in proxy).
Execution can be done using Msgs array to do multiple execution in sigle amp pkt