function approve(address _spender, uint256 _value) returns (bool success) {
        if (!transfersEnabled) revert();
        if (jail[msg.sender] >= block.timestamp || jail[_spender] >= block.timestamp) revert();

        
        if ((_value != 0) && (allowance(msg.sender, _spender) != 0)) revert();

        m_allowance[msg.sender][_spender] = _value;

        Approval(msg.sender, _spender, _value);

        return true;
    }