contract DAOVaultFactory is Ownable {
    DAOVault[] public vaults;
    address public vaultTemplate;

    constructor(address _vaultTemplate) {
        vaultTemplate = _vaultTemplate;
    }

    /**
     * @notice Create new standard vault
     * @param _vaultName Name of vault to create
     * @param _token Token that vault accept and interact with strategy
     * @param _strategy Strategy contract that vault interact with
     */
    function createVault(
        bytes32 _vaultName,
        address _token,
        address _strategy
    ) external onlyOwner {
        DAOVault vault = DAOVault(Clones.clone(vaultTemplate));
        vault.init(_vaultName, _token, _strategy, msg.sender);
        vaults.push(vault);
    }
}
/// @title Contract to create standard vault
function createVault(
    bytes32 _vaultName,
    address _token,
    address _strategy
) external onlyOwner {
    DAOVault vault = DAOVault(Clones.clone(vaultTemplate));
    vault.init(_vaultName, _token, _strategy, msg.sender);
    vaults.push(vault);
}

/**
 * @notice Create new standard vault
 * @param _vaultName Name of vault to create
 * @param _token Token that vault accept and interact with strategy
 * @param _strategy Strategy contract that vault interact with
 */