function distribute(address holder) public onlyOwner returns (uint256 amountDistributed) {
        require(distributed[holder] == 0);

        uint256 holderBalance = token.balanceOf(holder);
        uint256 portion = percent(holderBalance, eligibleTokens, uint256(18));
        amountDistributed = totalDistributionAmountInWei.mul(portion).div(1000000000000000000);

        distributed[holder] = amountDistributed;
        Dividend(holder, amountDistributed);
        holder.transfer(amountDistributed);
    }