diff --git a/bin/is b/bin/is
index 0e095e49b203a13d61a82cf19dfad4eeb02b35e3..4c7909a5727ee5e326ea7133fec98b1a7b4b0cd3 100755
--- a/bin/is
+++ b/bin/is
@@ -257,7 +257,7 @@ def c_list(parser, args):
     '''
     repoman = load_repositories(args)
     for pattern in args.image:
-        repoman.show_images(pattern, o_long=args.long, o_json=args.json,
+        repoman.show_images(pattern, all_version=args.all_version, o_long=args.long, o_json=args.json,
                             o_md5=args.md5, o_date=args.date, o_author=args.author,
                             o_size=args.size, o_url=args.url, o_description=args.description)
 
@@ -505,7 +505,9 @@ p_install.set_defaults(func=c_install, subparser=p_install)
 
 # list command parser
 p_list = subparsers.add_parser("list", help=c_list.__doc__.lower())
-p_list.add_argument("-a", "--author", action="store_true", default=False,
+p_list.add_argument("-a", "--all-version", action="store_true", default=False,
+                    help="list all versions of the same image")
+p_list.add_argument("-A", "--author", action="store_true", default=False,
                     help="display image author")
 p_list.add_argument("-d", "--date", action="store_true", default=False,
                     help="display image date")
diff --git a/completion/bash/is b/completion/bash/is
index 87d5f3c1138b97c39f7bcf23ee8c72ee9be0c02a..4c0e0f0d76de3fd3f260aa53ab4036b451b37bb4 100644
--- a/completion/bash/is
+++ b/completion/bash/is
@@ -127,7 +127,7 @@ _is() {
 	    (( args > 2 )) && _filedir
             ;;
 	list)
-            [[ "$cur" == -* ]] && _opt '-h --help -l --long -j --json -m --md5 -s --size -d --date -a --author -u --url -D --description --no-sync' && return 0
+            [[ "$cur" == -* ]] && _opt '-h --help -l --long -j --json -m --md5 -s --size -d --date -a --all-version -A --author -u --url -D --description --no-sync' && return 0
 	    _remote_image
             ;;
 	move)
diff --git a/installsystems/repository.py b/installsystems/repository.py
index 1caf4d50667fe16830f376f843b9ccfeaa83c13a..ede1ac9757e6f3892a4c0eadc77b25f22272ea30 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -595,7 +595,7 @@ class RepositoryManager(object):
         '''
         return [ r.config.name for r in self.repos if r.config.offline ]
 
-    def images(self, pattern):
+    def images(self, pattern, all_version=True):
         '''
         Return a list of available images
         '''
@@ -609,6 +609,17 @@ class RepositoryManager(object):
         for k in images.keys():
             if not fnmatch.fnmatch(k, pattern):
                 del images[k]
+        # filter multiple versions
+        if not all_version:
+            for repo in set((images[i]["repo"] for i in images)):
+                for img in set((images[i]["name"] for i in images if images[i]["repo"] == repo)):
+                    versions = [ images[i]['version']
+                                 for i in images if images[i]["repo"] == repo and images[i]["name"] == img ]
+                    f = lambda x,y: x if istools.compare_versions(x, y) > 0 else y
+                    last = reduce(f, versions)
+                    versions.remove(last)
+                    for rmv in versions:
+                        del images["%s/%s:%s" % (repo, img, rmv)]
         return images
 
     def get(self, name, version=None, best=False):
@@ -671,7 +682,7 @@ class RepositoryManager(object):
                 s += "  (%s)" % repo.config.path
             out(s)
 
-    def show_images(self, pattern, o_json=False, o_long=False,
+    def show_images(self, pattern, all_version=True, o_json=False, o_long=False,
                     o_md5=False, o_date=False, o_author=False, o_size=False,
                     o_url=False, o_description=False):
         '''
@@ -681,7 +692,7 @@ class RepositoryManager(object):
         all images parameter can be given in arguments to displayed
         '''
         # get image list
-        images = self.images(pattern)
+        images = self.images(pattern, all_version)
         # display result
         if o_json:
             s = json.dumps(images)