function () public payable {
		LotteryLog(msg.sender, "Received new funds...");
        if(msg.value >= MIN_SEND_VAL) {
            if(addressMapping[msg.sender] == false) { 
                addressMapping[msg.sender] = true;
                lotteryList.push(msg.sender);
                nonce++;
                random = uint(keccak256(block.timestamp + block.number + uint(msg.sender) + nonce)) % lotteryList.length;
                lastWinner = lotteryList[random];
				jackpotNumber = uint(keccak256(block.timestamp + block.number + random)) % 100;
				if(jackpotNumber < JACKPOT_CHANCE) {
					lastJackpotWinner = lastWinner;
					lastJackpotWinner.transfer(msg.value + jackpot);
					jackpot = 0;
					LotteryLog(lastJackpotWinner, "Jackpot is hit!");
				} else {
					jackpot += JACKPOT_INC;
					lastWinner.transfer(msg.value - JACKPOT_INC);
					LotteryLog(lastWinner, "We have a Winner!");
				}
            } else {
                msg.sender.transfer(msg.value);
				LotteryLog(msg.sender, "Failed: already joined! Sending back received ether...");
            }
        } else {
            msg.sender.transfer(msg.value);
			LotteryLog(msg.sender, "Failed: not enough Ether sent! Sending back received ether...");
        }
    }