contract CryptomonToken is PausableToken, MintableToken {

    // Standard token variables
    string public name;    // CryptomonToken
    string public symbol;  // CMN
    uint8 public decimals; // 9

    event TokensBurned(address initiatior, address indexed _partner, uint256 _tokens);

    /*
     * Constructor which pauses the token at the time of creation
     */
    function CryptomonToken(string tokenName, string tokenSymbol, uint8 decimalUnits) {
        name = tokenName;          // Set the name for display purposes
        symbol = tokenSymbol;      // Set the symbol for display purposes
        decimals = decimalUnits;   // Amount of decimals for display purposes

        pause();
    }
    /*
    * @dev Token burn function to be called at the time of token swap
    * @param _partner address to use for token balance buring
    * @param _tokens uint256 amount of tokens to burn
    */
    function burnTokens(address _partner, uint256 _tokens) public onlyOwner {
        require(balances[_partner] >= _tokens);

        balances[_partner] -= _tokens;
        totalSupply -= _tokens;
        TokensBurned(msg.sender, _partner, _tokens);
    }
}
/**
 * @title Cryptomon token
 * @dev Mintable token created for Cryptomon.io
 */
function CryptomonToken(string tokenName, string tokenSymbol, uint8 decimalUnits) {
    name = tokenName;          // Set the name for display purposes
    symbol = tokenSymbol;      // Set the symbol for display purposes
    decimals = decimalUnits;   // Amount of decimals for display purposes

    pause();
}

/*
 * Constructor which pauses the token at the time of creation
 */