function addReward(address _rewardToken) external {
  if (_rewardToken == address(0)) revert AddressZero();
  if (!minters[msg.sender]) revert InsufficientPermission();
  if (rewardData[_rewardToken].lastUpdateTime != 0) revert AlreadyAdded();
  rewardTokens.push(_rewardToken);

  Reward storage rd = rewardData[_rewardToken];
  rd.lastUpdateTime = block.timestamp;
  rd.periodFinish = block.timestamp;

  isRewardToken[_rewardToken] = true;
  emit RewardAdded(_rewardToken);
}
