contract MetaToken is
    ERC20,
    GovernedMinterRole,
    ERC20Detailed,
    ERC20Burnable
{

    /**
     * @dev MetaToken simply implements a detailed ERC20 token,
     * and a governed list of minters
     */
    constructor(
        address _nexus,
        address _initialRecipient
    )
        public
        GovernedMinterRole(_nexus)
        ERC20Detailed(
            "Meta",
            "MTA",
            18
        )
    {
        // 100m initial supply
        _mint(_initialRecipient, 100000000 * (10 ** 18));
    }

    // Forked from @openzeppelin
    /**
     * @dev See {ERC20-_mint}.
     *
     * Requirements:
     *
     * - the caller must have the {MinterRole}.
     */
    function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }
}
/**
 * @title  MetaToken
 * @dev    MetaToken is an ERC20 token, with mint privileges governed by mStable
 * governors
 */
function mint(address account, uint256 amount) public onlyMinter returns (bool) {
    _mint(account, amount);
    return true;
}

/**
 * @dev See {ERC20-_mint}.
 *
 * Requirements:
 *
 * - the caller must have the {MinterRole}.
 */