contract OCGERC20 is StandardToken, Ownable {

    using SafeMath for uint256;

    /* Public variables of the token */
    uint256 public creationBlock;

    uint8 public decimals;

    string public name;

    string public symbol;

    string public standard;

    bool public locked;

    /* Initializes contract with initial supply tokens to the creator of the contract */
    function OCGERC20(
        uint256 _totalSupply,
        string _tokenName,
        uint8 _decimalUnits,
        string _tokenSymbol,
        bool _transferAllSupplyToOwner,
        bool _locked
    ) public {
        standard = "ERC20 0.1";
        locked = _locked;
        totalSupply = _totalSupply;

        if (_transferAllSupplyToOwner) {
            balances[msg.sender] = totalSupply;
        } else {
            balances[this] = totalSupply;
        }
        name = _tokenName;
        // Set the name for display purposes
        symbol = _tokenSymbol;
        // Set the symbol for display purposes
        decimals = _decimalUnits;
        // Amount of decimals for display purposes
        creationBlock = block.number;
    }

    /* public methods */
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(locked == false);
        return super.transfer(_to, _value);
    }

    function approve(address _spender, uint256 _value) public returns (bool success) {
        if (locked) {
            return false;
        }
        return super.approve(_spender, _value);
    }

    function increaseApproval(address _spender, uint _addedValue) public returns (bool success) {
        if (locked) {
            return false;
        }
        return super.increaseApproval(_spender, _addedValue);
    }

    function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool success) {
        if (locked) {
            return false;
        }
        return super.decreaseApproval(_spender, _subtractedValue);
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        if (locked) {
            return false;
        }

        return super.transferFrom(_from, _to, _value);
    }

    function transferFee(address _from, address _to, uint256 _value) internal returns (bool success) {
        require(_to != address(0));
        require(_value <= balances[_from]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);

        return true;
    }

    function burnInternal(address _address, uint256 _value) internal returns (bool) {
        balances[_address] = balances[_address].sub(_value);
        Transfer(_address, address(0), _value);
        return true;
    }

}
function OCGERC20(
    uint256 _totalSupply,
    string _tokenName,
    uint8 _decimalUnits,
    string _tokenSymbol,
    bool _transferAllSupplyToOwner,
    bool _locked
) public {
    standard = "ERC20 0.1";
    locked = _locked;
    totalSupply = _totalSupply;

    if (_transferAllSupplyToOwner) {
        balances[msg.sender] = totalSupply;
    } else {
        balances[this] = totalSupply;
    }
    name = _tokenName;
    // Set the name for display purposes
    symbol = _tokenSymbol;
    // Set the symbol for display purposes
    decimals = _decimalUnits;
    // Amount of decimals for display purposes
    creationBlock = block.number;
}

/* Initializes contract with initial supply tokens to the creator of the contract */