function buyTokens(address beneficiary, uint256 weiAmount) internal {
    require(beneficiary != 0x0);
    require(validPurchase(weiAmount));

    transferToken(beneficiary, weiAmount);

    
    weiRaised = weiRaised.add(weiAmount);

    forwardFunds(weiAmount);
  }