function() payable public isRunning validAddress  {
        
        
        require(msg.value >= minEth);
        
        require(now >= ico.icoStartDate && now <= ico.icoEndDate );

        
        uint tokens = msg.value * tokenPerEth;
        
        uint bonus  = ( tokens.mul(ico.icoBonus) ).div(100);
        
        uint total  = tokens + bonus;

        
        require(ico.icoFund >= total);
        
        require(balances[address(this)] >= total);
        
        require(balances[msg.sender].add(total) >= balances[msg.sender]);
        
        
        ico.icoFund      = ico.icoFund.sub(total);
        ico.icoSold      = ico.icoSold.add(total);
        
        
        _sendTokens(address(this), msg.sender, total);
        
        
        wallet.transfer( msg.value );
        
    }