function createTokens() public isUnderHardCap saleIsOn payable {
    uint amount = msg.value;
    uint tokens = 0;    
    uint stageAmount = hardcap.div(4);
    
    if (address(this).balance <= stageAmount) {
      tokens = calculateTokens(amount, 1, stageAmount);
    } else if (address(this).balance <= stageAmount * 2) {
      tokens = calculateTokens(amount, 2, stageAmount);
    } else if (address(this).balance <= stageAmount * 3) {
      tokens = calculateTokens(amount, 3, stageAmount);
    } else {
      tokens = calculateTokens(amount, 4, stageAmount);
    }
    
    token.mint(msg.sender, tokens);
    balances[currentRound][msg.sender] = balances[currentRound][msg.sender].add(amount);
  }