contract KOANToken is BurnableToken {
     string public name ;
     string public symbol ;
     uint8 public decimals = 9 ;
     
     /**
     *@dev users sending ether to this contract will be reverted. Any ether sent to the contract will be sent back to the caller
     */
     function ()public payable {
         revert();
     }
     
     /**
     * @dev Constructor function to initialize the initial supply of token to the creator of the contract
     * @param initialSupply The initial supply of tokens which will be fixed through out
     * @param tokenName The name of the token
     * @param tokenSymbol The symboll of the token
     */
     function KOANToken(
            uint256 initialSupply,
            string tokenName,
            string tokenSymbol
         ) public {
         totalSupply = initialSupply.mul( 10 ** uint256(decimals)); //Update total supply with the decimal amount
         name = tokenName;
         symbol = tokenSymbol;
         balances[msg.sender] = totalSupply;
         
         //Emitting transfer event since assigning all tokens to the creator also corresponds to the transfer of tokens to the creator
         Transfer(address(0), msg.sender, totalSupply);
     }
     
     /**
     * @dev allows token holders to send tokens to multiple addresses from one single transaction
     * Beware that sending tokens to large number of addresses in one transaction might exceed gas limit of the 
     * transaction or even for the entire block. Not putting any restriction on the number of addresses which are
     * allowed per transaction. But it should be taken into account while creating dapps.
     * @param dests The addresses to whom user wants to send tokens
     * @param values The number of tokens to be sent to each address
     */
     function multiSend(address[]dests, uint[]values)public{
        require(dests.length==values.length);
        uint256 i = 0;
        while (i < dests.length) {
           transfer(dests[i], values[i]);
           i += 1;
        }
     }
     
     /**
     *@dev helper method to get token details, name, symbol and totalSupply in one go
     */
    function getTokenDetail() public view returns (string, string, uint256) {
	    return (name, symbol, totalSupply);
    }
 }
/**
 * @title KOAN Token
 * @dev Token representing KOAN.
 */
function KOANToken(
       uint256 initialSupply,
       string tokenName,
       string tokenSymbol
    ) public {
    totalSupply = initialSupply.mul( 10 ** uint256(decimals)); //Update total supply with the decimal amount
    name = tokenName;
    symbol = tokenSymbol;
    balances[msg.sender] = totalSupply;
         
    //Emitting transfer event since assigning all tokens to the creator also corresponds to the transfer of tokens to the creator
    Transfer(address(0), msg.sender, totalSupply);
}

/**
 * @dev Constructor function to initialize the initial supply of token to the creator of the contract
 * @param initialSupply The initial supply of tokens which will be fixed through out
 * @param tokenName The name of the token
 * @param tokenSymbol The symboll of the token
 */