function release() public {
        require(!revoked);

        uint256 grant;
        uint percent;
        for (uint32 i = 0; i < vestingCommencementDates.length; i++) {
            if (block.timestamp < vestingCommencementDates[i]) {
            } else {
                percent += vestingPercents[i];
            }
        }
        grant = total.mul(percent).div(100);

        if (grant > lapsedTotal) {
            uint256 tokens = grant.sub(lapsedTotal);
            lapsedTotal = lapsedTotal.add(tokens);
            if (!token.transfer(account, tokens)) {
                revert();
            } else {
            }
        }
    }