         if let mode = Crunch.TheMode(rawValue: arg) {
             return .Mode(mode)
         }
-        switch arg {
-        case "--chdir", "-C":
-            return .Switch(.chdir)
-        case "-v", "-vv":
-            return .Switch(.v)
-        default:
-            guard !arg.hasPrefix("-") else {
-                throw CommandLineError.InvalidUsage("Unknown argument: \(arg)", .Imply)
-            }
-            return .Name(arg)
-        }
+        
+        if let theSwitch = Crunch.TheSwitch(rawValue: arg) {
+            return .Switch(theSwitch)
+        }
+        
+        guard !arg.hasPrefix("-") else {
+            throw CommandLineError.InvalidUsage("Unknown argument: \(arg)", .Imply)
+        }
+        return .Name(arg)
     }
 
     mutating func pop() throws -> Crunch {

                throw CommandLineError.InvalidUsage("Option `--chdir' requires subsequent directory argument", .Imply)
            }

        case .Switch(.v):
            verbosity += 1

        case .Name(let name):

                mode = .Version
            }

        case .Switch(.Chdir):
            switch try cruncher.peek() {
            case .Some(.Name(let name)):
                chdir = name
