function protectKingdom() returns(bool) {
        uint amount = msg.value;
        
        if (amount < 10 finney) {
            msg.sender.send(msg.value);
            return false;
        }
        
        if (amount > 100 ether) {
            msg.sender.send(msg.value - 100 ether);
            amount = 100 ether;
        }

        
        if (lastCollection + TWENTY_FOUR_HOURS < block.timestamp) {
            
            
            if (totalCitizens == 1) {
                
                citizensAddresses[citizensAddresses.length - 1].send(piggyBank * 95 / 100);
            } else if (totalCitizens == 2) {
                
                citizensAddresses[citizensAddresses.length - 1].send(piggyBank * 60 / 100);
                citizensAddresses[citizensAddresses.length - 2].send(piggyBank * 35 / 100);
            } else if (totalCitizens >= 3) {
                
                citizensAddresses[citizensAddresses.length - 1].send(piggyBank * 50 / 100);
                citizensAddresses[citizensAddresses.length - 2].send(piggyBank * 30 / 100);
                citizensAddresses[citizensAddresses.length - 3].send(piggyBank * 15 / 100);
            }

            godBank += piggyBank * 5 / 100;
            
            piggyBank = 0;

            
            jester = msg.sender;

            lastFell = block.timestamp;
            citizensAddresses.push(msg.sender);
            citizensAmounts.push(amount * 110 / 100);
            totalCitizens += 1;
            investInTheSystem(amount);
            godAutomaticCollectFee();
            
            piggyBank += amount * 90 / 100;

            round += 1;
        } else {
            if (lastFell + TWENTY_FOUR_HOURS * 2 >= block.timestamp) {
                citizensAddresses.push(msg.sender);
                citizensAmounts.push(amount * 130 / 100);
            } else {
                citizensAddresses.push(msg.sender);
                citizensAmounts.push(amount * 110 / 100);
            }
            totalCitizens += 1;
            investInTheSystem(amount);

            while (citizensAmounts[lastCitizenPaid] < (address(this).balance - piggyBank - godBank - kingBank - jesterBank) && lastCitizenPaid <= totalCitizens) {
                citizensAddresses[lastCitizenPaid].send(citizensAmounts[lastCitizenPaid]);
                amountAlreadyPaidBack += citizensAmounts[lastCitizenPaid];
                lastCitizenPaid += 1;
            }
        }
    }