function _getCurrentTokenBonus(uint256 weiAmount)
      internal view returns (uint256)
  {
      
      if (_currentBonus > 0) { return _currentBonus; }

      uint256 bonus = 0;
      uint256 currentTime = block.timestamp;
      uint256 threshold = 10;

      if (openingTime().add(7 days) > currentTime) {
          return weiAmount >= threshold.mul(1 ether) ? 50 : 40;
      } else if (openingTime().add(14 days) > currentTime) {
          return weiAmount >= threshold.mul(1 ether) ? 40 : 30;
      } else {
          return weiAmount >= threshold.mul(1 ether) ? 30 : 20;
      }
  }