contract SygnumTokenV1 is SygnumToken {
    string public tokenURI;
    bool public initializedV1;
    event TokenUriUpdated(string newToken);

    // changed back to public for tests
    function initializeContractsAndConstructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        bytes4 _category,
        string memory _class,
        address _issuer,
        address _baseOperators,
        address _whitelist,
        address _traderOperators,
        address _blockerOperators,
        string memory _tokenURI
    ) public {
        require(!initializedV1, "SygnumTokenV1: already initialized");
        super.initializeContractsAndConstructor(
            _name,
            _symbol,
            _decimals,
            _category,
            _class,
            _issuer,
            _baseOperators,
            _whitelist,
            _traderOperators,
            _blockerOperators
        );
        initializeV1(_tokenURI);
    }

    function initializeV1(string memory _tokenURI) public {
        require(!initializedV1, "SygnumTokenV1: already initialized");
        tokenURI = _tokenURI;
        initializedV1 = true;
    }

    function updateTokenURI(string memory _newToken) public onlyOperator {
        tokenURI = _newToken;
        emit TokenUriUpdated(_newToken);
    }
}
function initializeContractsAndConstructor(
    string memory _name,
    string memory _symbol,
    uint8 _decimals,
    bytes4 _category,
    string memory _class,
    address _issuer,
    address _baseOperators,
    address _whitelist,
    address _traderOperators,
    address _blockerOperators,
    string memory _tokenURI
) public {
    require(!initializedV1, "SygnumTokenV1: already initialized");
    super.initializeContractsAndConstructor(
        _name,
        _symbol,
        _decimals,
        _category,
        _class,
        _issuer,
        _baseOperators,
        _whitelist,
        _traderOperators,
        _blockerOperators
    );
    initializeV1(_tokenURI);
}

// changed back to public for tests