function() public payable {
        require(isTreasurer[msg.sender]);
        require(dividendEndTime < block.timestamp);

        
        if (address(this).balance > msg.value) {
            uint256 payout = address(this).balance.sub(msg.value);
            owner.transfer(payout);
            emit Reclaimed(payout, dividendEndTime, block.timestamp);
        }

        currentDividend = address(this).balance;

        
        dividendEndTime = block.timestamp.add(dividendCycleTime);

        
        emit Payin(msg.sender, msg.value, dividendEndTime);

        lastDividendIncreaseDate = block.timestamp;
    }