contract NYXToken is MintableToken, ERC23PayableToken {
    string public constant name = "NYX Token";
    string public constant symbol = "NYX";
    uint public constant decimals = 0;

    bool public transferEnabled = false;

    //The cap is 150 mln NYX
    uint private constant CAP = 150*(10**6);

    function mint(address _to, uint _amount){
        require(totalSupply.add(_amount) <= CAP);
        super.mint(_to, _amount);
    }

    function NYXToken(address multisigOwner) {
        //Transfer ownership on the token to multisig on creation
        transferOwnership(multisigOwner);
    }

    /**
    * Overriding all transfers to check if transfers are enabled
    */
    function transferAndPay(address to, uint value, bytes data) payable{
        require(transferEnabled);
        super.transferAndPay(to, value, data);
    }

    function enableTransfer(bool enabled) onlyOwner{
        transferEnabled = enabled;
    }

}
/*************************************************************************
 * import "./include/ERC23PayableToken.sol" : end
 *************************************************************************/
function transferAndPay(address to, uint value, bytes data) payable{
        require(transferEnabled);
        super.transferAndPay(to, value, data);
    }
/**
 * Overriding all transfers to check if transfers are enabled
 */