contract LitToken is CappedToken {
    string public name = "LIT";
    string public symbol = "LIT";
    uint8 public constant decimals = 18;

    uint256 public constant decimalFactor = 10 ** uint256(decimals);

    // HN: initial totalSupply is premined amount or total after mining?
    // premined = 50B
    // total supply = 75B
    // rewarded for mining = 25B
    uint256 public initialSupply = 50 * (10**9) * decimalFactor; // 50B

    uint256 public maxSupply = 75 * (10**9) * decimalFactor; // 75B

    function LitToken()
        public
        CappedToken(maxSupply)
    {
        totalSupply_ = initialSupply;
        balances[msg.sender] = initialSupply;
        Mint(msg.sender, initialSupply);
        Transfer(address(0), msg.sender, initialSupply);
    }

    /**
     * @dev Function to mint tokens. Only part of amount would be minted
     * if amount exceeds cap
     *
     * @param _to The address that will receive the minted tokens.
     * @param _amount The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mintFull(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
        require(totalSupply_ < cap);

        uint amountToMint;

        if (totalSupply_.add(_amount) >= cap) {
            amountToMint = cap.sub(totalSupply_);
        } else {
            amountToMint = _amount;
        }

        return MintableToken.mint(_to, amountToMint);
    }
}
function mintFull(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    require(totalSupply_ < cap);

    uint amountToMint;

    if (totalSupply_.add(_amount) >= cap) {
        amountToMint = cap.sub(totalSupply_);
    } else {
        amountToMint = _amount;
    }

    return MintableToken.mint(_to, amountToMint);
}

/**
 * @dev Function to mint tokens. Only part of amount would be minted
 * if amount exceeds cap
 *
 * @param _to The address that will receive the minted tokens.
 * @param _amount The amount of tokens to mint.
 * @return A boolean that indicates if the operation was successful.
 */