function buyTokens(address beneficiary) whenNotPaused() payable {
    require(beneficiary != 0x0);
    require(msg.value != 0);
    require(block.timestamp <= END);

    uint256 tokens = weiAmount.mul(getRate() * 4);

    if (tokensLeft.sub(tokens) < 0) revert();
    
    tokensLeft = tokensLeft.sub(tokens);

    uint256 weiAmount = msg.value;
    weiRaised = weiRaised.add(weiAmount);
    
    token.mint(beneficiary, tokens);

    wallet.transfer(msg.value);
  }