My understanding is ethereum smart contracts can store data internally so basically data and business logic is combined inside smart contract(s).Business logic changes frequently but not data. Whenever business logic changes I end up deploying a new contracts and eventually lose all the existing data. What should be the best design to separate out the data and persist it even after logic change. I'm new to smart contracts and greatly appreciate your suggestions/input to start writing production ready contracts using solidity. I didn't find any static/global data structure through which I can persist data across contracts.