# SG2 Spec: Stargaze Minter Factory Contracts
Common types needed for minter factories. New minter factories should extend these types to add their custom properties.
Every minter requires a factory that stores the minter's governance paramaters. A minter factory creates minters based on these paramaters.
For example, the vending minter factory needs a `shuffle_fee`. This is added as a custom extension to `MinterParams` and `UpdateParamsMsg`.
```rs
pub struct VendingUpdateParamsExtension {
pub shuffle_fee: Option<Coin>,
}
pub type VendingUpdateParamsMsg = UpdateMinterParamsMsg<VendingUpdateParamsExtension>;
pub struct ParamsExtension {
pub shuffle_fee: Coin,
}
pub type VendingMinterParams = MinterParams<ParamsExtension>;
```