function allocateTokens(address investor, uint _amount) internal {
    	
    	require(kycVerified[investor]);

    	
    	uint numTokens = safeMul(_amount, rate);

    	
    	if (preSale) {
    		
    		if (_amount >= highBonus) {
    			numTokens = safeDiv(safeMul(numTokens, highBonusRate), 100);
    		}

            else {
                numTokens = safeDiv(safeMul(numTokens, lowBonusRate), 100);
            }
    	}
    	else {
    			numTokens = safeDiv(safeMul(numTokens, lowBonusRate), 100);
    		}

    	
    	require(token.balanceOf(address(this)) >= numTokens);
    	tokenBalanceOf[investor] = safeAdd(tokenBalanceOf[investor], numTokens);

    	
    	token.transfer(investor, numTokens);

    	
    	contributionAmtOf[investor] = safeAdd(contributionAmtOf[investor], _amount);
    	amountRaised = safeAdd(amountRaised, _amount);

    	
    }