 	public let usage: () -> CommandantError<ClientError>
 
 	/// Creates a command that wraps another.
-	private init<C: CommandType where C.Options.ClientError == ClientError>(_ command: C) {
+	private init<C: CommandType where C.ClientError == ClientError, C.Options.ClientError == ClientError>(_ command: C) {
 		verb = command.verb
 		function = command.function
 		run = { (arguments: ArgumentParser) -> Result<(), CommandantError<ClientError>> in

	///
	/// If another command was already registered with the same `verb`, it will
	/// be overwritten.
	public func register<C: CommandType where C.Options.ClientError == ClientError>(command: C) {
		commandsByVerb[command.verb] = CommandWrapper(command)
	}


			}

			if let options = options.value {
				return command
					.run(options)
					.mapError(CommandantError.CommandError)
			} else {
				return .Failure(options.error!)
			}
