function transfer(address _to, uint256 _tokens_in_cents) public returns (bool) {
        require(_tokens_in_cents > 0);
        require(_to != msg.sender);
        getVested(msg.sender);
        require(balances[msg.sender] >= _tokens_in_cents);
        require(vested[msg.sender] >= _tokens_in_cents);

        if(balanceOf(_to) == 0) {
            investorCount++;
        }

        balances[msg.sender] = balances[msg.sender].sub(_tokens_in_cents);
        vested[msg.sender] = vested[msg.sender].sub(_tokens_in_cents);
        balances[_to] = balances[_to].add(_tokens_in_cents);

        if(balanceOf(msg.sender) == 0) {
            investorCount=investorCount-1;
        }

        
        if(msg.sender==owner){
            uint raized = (_tokens_in_cents.div(10**decimals)).mul(rateICO);
            if(isCrowdSaleStatePreSale()) {
                preSaleRaised = preSaleRaised.add(raized);
            } else if (isCrowdSaleStateICO()) {
                icoRaised = icoRaised.add(raized);
            }
        }

        Transfer(msg.sender, _to, _tokens_in_cents);
        return true;
    }