     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")
+  private init(_ shortFlag: String?, _ longFlag: String?, _ required: Bool, _ helpMessage: String) {
+    if let sf = shortFlag {
+      assert(sf.characters.count == 1, "Short flag must be a single character")
+      assert(Int(sf) == nil && sf.toDouble() == nil, "Short flag cannot be a numeric value")
+    }
+    
+    if let lf = longFlag {
+      assert(Int(lf) == nil && lf.toDouble() == nil, "Long flag cannot be a numeric value")
+    }
     
     self.shortFlag = shortFlag
     self.longFlag = longFlag

    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 {
    _value = true
    return true

 * The base class for a command-line option.
 */
public class Option {
  let shortFlag: String?
  let longFlag: String?
  let required: Bool
  let helpMessage: String
  
  /* Override this property to test _value for nil on each Option subclass.
   *
