Implement some form of voting ballot
Implement a pair of contracts: one that serves as a voting ballot and another as a token. This voting ballot allows holders of the token to create proposals and to vote on said proposals. The voting period duration must be identical for all proposals and should be defined on the voting ballot contract. Proposals created on the voting ballot must include a predefined list of voting options. Any token holder can vote on any ongoing proposal or delegate their voting power to another holder. A proposal is only passed if a quorum, predefined in the voting ballot itself, is reached.