 
 /// Maintains the list of commands available to run.
 public final class CommandRegistry<ClientError> {
-	private var commandsByVerb: [String: CommandOf<ClientError>] = [:]
+	private var commandsByVerb: [String: AnyCommand<ClientError>] = [:]
 
 	/// All available commands.
-	public var commands: [CommandOf<ClientError>] {
+	public var commands: [AnyCommand<ClientError>] {
 		return commandsByVerb.values.sort { return $0.verb < $1.verb }
 	}
 


	/// Returns the command matching the given verb, or nil if no such command
	/// is registered.
	public subscript(verb: String) -> CommandOf<ClientError>? {
		return commandsByVerb[verb]
	}
}

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

	/// Runs the command corresponding to the given verb, passing it the given
