contract ConjureFactory {
    event NewConjureContract(address deployed);
    event FactoryOwnerChanged(address newowner);
    address payable public factoryOwner;

    constructor() public {
        factoryOwner = msg.sender;
    }

    function getFactoryOwner() public view returns (address payable)
    {
        return factoryOwner;
    }

    /**
     * @dev lets anyone mint a new CONJURE contract
     */
    function ConjureMint(
        string memory name_,
        string memory symbol_,
        address payable owner_,
        address uniswapv2oracle_,
        address collateralfactory_
    ) public returns(address) {
        Conjure newContract = new Conjure(
            name_,
            symbol_,
            owner_,
            address(this),
            uniswapv2oracle_,
            collateralfactory_
        );
        emit NewConjureContract(address(newContract));
        return address(newContract);
    }

    /**
     * @dev Lets the Factory Owner change the current owner
     */
    function newFactoryOwner(address payable newOwner) public {
        require(msg.sender == factoryOwner);
        factoryOwner = newOwner;
        emit FactoryOwnerChanged(factoryOwner);
    }
}
function ConjureMint(
    string memory name_,
    string memory symbol_,
    address payable owner_,
    address uniswapv2oracle_,
    address collateralfactory_
) public returns(address) {
    Conjure newContract = new Conjure(
        name_,
        symbol_,
        owner_,
        address(this),
        uniswapv2oracle_,
        collateralfactory_
    );
    emit NewConjureContract(address(newContract));
    return address(newContract);
}

/**
 * @dev lets anyone mint a new CONJURE contract
 */