   override var isSet: Bool {
     /* CounterOption is always set; if missing from the command line, it's 0 */
     return true
-  }
-  
-  public init(shortFlag: String, longFlag: String, helpMessage: String) {
-    super.init(shortFlag: shortFlag, longFlag: longFlag, required: false, helpMessage: helpMessage)
   }
   
   override func setValue(values: [String]) -> Bool {

    return false
  }
  
  public init(shortFlag: String, longFlag: String, required: Bool, helpMessage: String) {
    assert(shortFlag.characters.count == 1, "Short flag must be a single character")
    assert(Int(shortFlag) == nil && shortFlag.toDouble() == nil, "Short flag cannot be a numeric value")
    assert(Int(longFlag) == nil && longFlag.toDouble() == nil, "Long flag cannot be a numeric value")
    
    self.shortFlag = shortFlag
    self.longFlag = longFlag

    return _value != nil
  }
  
  /* Re-defining the intializers is necessary to make the Swift 2 compiler happy, as
   * of Xcode 7 beta 2.
   */
  
  private override init(_ shortFlag: String?, _ longFlag: String?, _ required: Bool, _ helpMessage: String) {
    super.init(shortFlag, longFlag, required, helpMessage)
  }
  
  /** Initializes a new Option that has both long and short flags. */
  public convenience init(shortFlag: String, longFlag: String, required: Bool = false, helpMessage: String) {
    self.init(shortFlag as String?, longFlag, required, helpMessage)
  }
  
  /** Initializes a new Option that has only a short flag. */
  public convenience init(shortFlag: String, required: Bool = false, helpMessage: String) {
    self.init(shortFlag as String?, nil, required, helpMessage)
  }
  
  /** Initializes a new Option that has only a long flag. */
  public convenience init(longFlag: String, required: Bool = false, helpMessage: String) {
    self.init(nil, longFlag as String?, required, helpMessage)
  }
  
  override func setValue(values: [String]) -> Bool {
