We are developing a decentralized application on Ethereum that manages surveys.
We have a main smart-contract that contains survey information (i.e. hashes) as well as 2 main functions: one to create a new survey and one to participate to the survey.
This contract is becoming too large (+- 250 lines) so we would like to split it into several smaller contracts.
The challenge is that our functions all need to access the data that is stored in the main contract so we can't move functions to another contract (it would no longer have access to the data).
So we thought using a proxy mechanism. A proxy contract would store data and transfer calls to functions by delegate calls to different contracts.
Before we start implementing this architecture, we would like to know if:
1- Is this architecture/design correct?
2- What other options are available to us?
Thank you for your help