# Types of Proposals and Outcomes

#### What Can Be Voted On?

* Treasury expenditures (marketing, contributors, bounties)
* Protocol upgrades or feature deployments
* NFT utility changes (staking, roles, perks)
* Partnerships and integrations
* Ownership transfers or contract upgrades

#### Execution Logic

Once the proposal voting period ends, a user (or automated scheduler) can call `execute_proposal` to trigger the result.\ <br>

#### Anchor Code

```
pub fn execute_proposal(ctx: Context<ExecuteProposal>) -> Result<()> {
    let proposal = &mut ctx.accounts.proposal;
    require!(!proposal.executed, CustomError::AlreadyExecuted);

    if proposal.votes_yes > proposal.votes_no {
        // Execute DAO action (e.g., fund transfer)
    }

    proposal.executed = true;
    Ok(())
}

```
