diff --git a/bin/is b/bin/is
index 4ebd6b168178029635ba1e0380d138640cb32016..5706199f41e17f9d49a2dcf448304df12ad5d92d 100755
--- a/bin/is
+++ b/bin/is
@@ -197,44 +197,17 @@ def c_list(parser, args):
     List images in repository or image content
     '''
     # List available repositories
-    if len(args.values) == 0:
-        repoman = load_repositories(args)
+    repoman = load_repositories(args)
+    if len(args.object) == 0:
         arrow("Repositories")
         repoman.show(verbose=args.detail)
-        return
-    # list direct image or reposity content
-    elif len(args.values) == 1:
-        # list image file content
-        if (istools.isfile(args.values[0]) and os.path.isfile(args.values[0])):
-            pkg = PackageImage(args.values[0])
-            arrow("Image %s v%s" % (pkg.name, pkg.version))
-            pkg.show(verbose=args.detail)
-        # list repository content
-        else:
-            args.repo_filter = args.values[0]
-            repoman = load_repositories(args)
-            for repo in repoman:
-                arrow("Image in %s" % repo.config.name)
-                repo.show(args.detail)
-        return
-    # list last image version
-    elif len(args.values) == 2:
-        args.repo_filter = args.values[0]
-        args.image = args.values[1]
-        args.image_version = None
-    # list specific image version
-    elif len(args.values) == 3:
-        args.repo_filter = args.values[0]
-        args.image = args.values[1]
-        args.image_version = args.values[2]
     else:
-        args.subparser.print_usage()
-        exit(1)
-    # display content of image accross a repositories
-    repoman = load_repositories(args)
-    pkg = repoman.get(args.image, args.image_version)
-    arrow("Image %s v%s" % (pkg.name, pkg.version))
-    pkg.show(verbose=args.detail)
+        for o in args.object:
+            if o in repoman:
+                repoman[o].show(verbose=args.detail)
+            else:
+                img, repo = select_image(o, repoman)
+                img.show(verbose=args.detail)
 
 def c_move(parser, args):
     '''
@@ -376,8 +349,8 @@ p_install.set_defaults(func=c_install, subparser=p_install)
 p_list = subparsers.add_parser("list", help=c_list.__doc__.lower())
 p_list.add_argument("-l", action="store_true", dest="detail",
                     default=False, help="detailled list output")
-p_list.add_argument("values", nargs="*",
-                    help="image or repositories to list")
+p_list.add_argument("object", nargs="*",
+                    help="object can be an image or repositories")
 p_list.set_defaults(func=c_list, subparser=p_list)
 
 # move command parser
diff --git a/installsystems/repository.py b/installsystems/repository.py
index 3e11c5f48ca8f7ca0da0f7ed37ea4e296631da90..04b8f4a46d3ea6b16ec44b0608814d21448472c0 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -518,6 +518,15 @@ class RepositoryManager(object):
         else:
             raise TypeError
 
+    def __contains__(self, key):
+        '''
+        Check if a key is a repository name
+        '''
+        for r in self.repos:
+            if r.config.name == key:
+                return True
+        return False
+
     def register(self, config):
         '''
         Register a repository from its config