diff --git a/lib/cli.py b/lib/cli.py
index a800bae8ef9afe15c61e97fb46b74b1354761f5c..6b0283414b46e37f8f58c725361db8eff22a1631 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -764,6 +764,9 @@ def GenerateTable(headers, fields, separator, data,
   if unitfields is None:
     unitfields = []
 
+  numfields = utils.FieldSet(*numfields)
+  unitfields = utils.FieldSet(*unitfields)
+
   format_fields = []
   for field in fields:
     if headers and field not in headers:
@@ -773,7 +776,7 @@ def GenerateTable(headers, fields, separator, data,
       headers[field] = field
     if separator is not None:
       format_fields.append("%s")
-    elif field in numfields:
+    elif numfields.Matches(field):
       format_fields.append("%*s")
     else:
       format_fields.append("%-*s")
@@ -786,7 +789,7 @@ def GenerateTable(headers, fields, separator, data,
 
   for row in data:
     for idx, val in enumerate(row):
-      if fields[idx] in unitfields:
+      if unitfields.Matches(fields[idx]):
         try:
           val = int(val)
         except ValueError:
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index 5d268119d43361d37af673d2d858bf8a2af878d7..bfaa4e135c3beb11d925bf84393d3ace3f4b97aa 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -221,17 +221,19 @@ def ListInstances(opts, args):
       "be/memory": "Configured_memory",
       "be/vcpus": "VCPUs",
       "be/auto_balance": "Auto_balance",
+      "disk.count": "Disks",
+      "nic.count": "NICs",
       }
   else:
     headers = None
 
   if opts.human_readable:
-    unitfields = ["be/memory", "oper_ram", "sda_size", "sdb_size"]
+    unitfields = ["be/memory", "oper_ram", "sd(a|b)_size", "disk.size/.*"]
   else:
     unitfields = None
 
-  numfields = ["be/memory", "oper_ram", "sda_size", "sdb_size", "be/vcpus",
-               "serial_no"]
+  numfields = ["be/memory", "oper_ram", "sd(a|b)_size", "be/vcpus",
+               "serial_no", "(disk|nic).count", "disk.size/.*"]
 
   list_type_fields = ("tags",)
   # change raw values to nicer strings