diff --git a/bin/is b/bin/is
index 03a1f137619b31c1e32771af186350a72a42ecdc..069a646b6ea3930d23e9dbdf27da7c02dff8de51 100755
--- a/bin/is
+++ b/bin/is
@@ -139,56 +139,39 @@ def c_list(parser, args):
     '''
     List images in repository or image content
     '''
-    args.repo_filter = None
+    # List available repositories
     if len(args.list_args) == 0:
-        # List available repository
         repoman = load_repositories(args)
-        arrow('#light##green#[Repos]#reset#')
-        for repo in repoman:
-            out(repo.config.name)
-    # <repo> | <image> | <image file>
+        repoman.show(verbose=args.detail)
+        return
+    # list direct image or reposity content
     elif len(args.list_args) == 1:
-        # <image file>
-        if istools.pathtype(args.list_args[0]) == 'file' and\
-                os.path.isfile(args.list_args[0]):
-            pkg = PackageImage(istools.abspath(args.list_args[0]))
-            arrow('#light##green#[Image]#reset# %s' % pkg.name)
-            pkg.show(verbose=args.verbose_list, list=True)
+        # list image file content
+        if (istools.pathtype(args.list_args[0]) == 'file' and
+            os.path.isfile(args.list_args[0])):
+            pkg = PackageImage(args.list_args[0])
+            pkg.show(verbose=args.detail)
+        # list repository content
         else:
             args.repo_filter = args.list_args[0]
             repoman = load_repositories(args)
-            # <repo>
-            if len(repoman) != 0:
-                for repo in repoman:
-                    arrow('#light##green#[Repo]#reset# %s' % repo.config.name)
-                    repo.show(args.verbose_list)
-            # <image>
-            else:
-                args.repo_filter = None
-                args.image = args.list_args[0]
-                args.image_version = None
-    # <repo> <image> | <image> <version>
+            for repo in repoman:
+                repo.show(args.detail)
+        return
+    # list last image version
     elif len(args.list_args) == 2:
-        # <repo> <image>
-        if not PackageImage.check_image_version(args.list_args[1]):
-            args.repo_filter = args.list_args[0]
-            args.image = args.list_args[1]
-            args.image_version = None
-        # <image> <version>
-        else:
-            args.image = args.list_args[0]
-            args.image_version = args.list_args[1]
-    # <repo> <image> <version>
+        args.repo_filter = args.list_args[0]
+        args.image = args.list_args[1]
+        args.image_version = None
+    # list specific image version
     elif len(args.list_args) == 3:
         args.repo_filter = args.list_args[0]
         args.image = args.list_args[1]
         args.image_version = args.list_args[2]
-
-    if hasattr(args, 'image'):
-        repoman = load_repositories(args)
-        pkg = repoman.get(args.image, args.image_version)
-        arrow('#light##green#[Image]#reset# %s' % pkg.name)
-        pkg.show(verbose=args.verbose_list, list=True)
+    # display content of image accross a repositories
+    repoman = load_repositories(args)
+    pkg = repoman.get(args.image, args.image_version)
+    pkg.show(verbose=args.detail)
 
 def c_cat(parser, args):
     '''
@@ -321,9 +304,9 @@ p_get.set_defaults(func=c_get)
 
 # list command parser
 p_list = subparsers.add_parser("list", help=c_list.__doc__.lower())
-p_list.add_argument("-l", action="store_true", dest='verbose_list',
-                       default=False, help='Detailled list output')
-p_list.add_argument("list_args", nargs="*", help="Repo or image to list")
+p_list.add_argument("-l", action="store_true", dest='detail',
+                    default=False, help='detailled list output')
+p_list.add_argument("list_args", nargs="*", help="list content of image or repositories")
 p_list.set_defaults(func=c_list)
 
 # search command parser
diff --git a/installsystems/image.py b/installsystems/image.py
index c40b144e8cce2b30fc9e49e73fbe933870d8a20c..a1ee0a8806ea0a5ce55017907913cbbb1840c8ae 100644
--- a/installsystems/image.py
+++ b/installsystems/image.py
@@ -417,30 +417,26 @@ class PackageImage(Image):
         arrowlevel(-1)
         return desc
 
-    def show(self, verbose=False, list=False):
+    def show(self, verbose=False):
         '''
         Display image content
         '''
-        out('Name        : %s' % self.name)
-        out('Version     : %s' % self.version)
-        out('Date        : %s' % time.asctime(time.gmtime(self.date)))
+        out('#light##yellow#Name:#reset# %s' % self.name)
+        out('#light##yellow#Version:#reset# %s' % self.version)
+        out('#yellow#Date:#reset# %s' % time.asctime(time.gmtime(self.date)))
+        out('#yellow#Description:#reset# %s' % self.description)
+        out('#yellow#Author:#reset# %s' % self.author)
+        out('#yellow#MD5:#reset# %s' % self.md5)
         if verbose:
-            out('Description : %s' % self.description)
-            out('Author      : %s' % self.author)
-            out('MD5         : %s' % self.md5 )
-            out('Payload :')
             payloads = self.payload
             for payload_name in payloads:
                 payload = payloads[payload_name]
-                out('   Name : %s' % payload_name)
-                out('   Date : %s' % time.asctime(time.gmtime(payload.mtime)))
-                out('   Size : %s' % (istools.human_size(payload.size)))
-                out('   MD5  : %s' % payload.md5)
-                out('')
-        out('')
-        if list:
-            out('Content : ')
-            self._tarball.list(verbose)
+                out('#light##yellow#Payload:#reset# %s' % payload_name)
+                out('  #yellow#Date:#reset# %s' % time.asctime(time.gmtime(payload.mtime)))
+                out('  #yellow#Size:#reset# %s' % (istools.human_size(payload.size)))
+                out('  #yellow#MD5:#reset# %s' % payload.md5)
+        out('#light##yellow#Content:#reset#')
+        self._tarball.list(verbose)
 
     def check(self, message="Check MD5"):
         '''
diff --git a/installsystems/repository.py b/installsystems/repository.py
index 8c5d9d9cb6845fa201b2f631d87b5e393b9290c1..cc7f107fa90fb9bf054bebbea5064a2bfd4cc13b 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -185,26 +185,22 @@ class Repository(object):
         List images in repository
         '''
         images = self.db.ask("SELECT md5, name, version, date,\
-                author, description, size FROM image").fetchall()
+                author, description, size FROM image ORDER BY name, version").fetchall()
 
-        for image_md5, image_name, image_version, image_date, image_author,\
-        image_description, image_size in images:
-            out('Name        : %s' % image_name)
-            out('Version     : %s' % image_version)
-            out('Date        : %s' % time.asctime(time.gmtime(image_date)))
+        for (image_md5, image_name, image_version, image_date, image_author,
+             image_description, image_size) in images:
+            out('#light##yellow#%s #reset#v%s' % (image_name, image_version))
             if verbose:
-                out('Description : %s' % image_description)
-                out('Author      : %s' % image_author)
-                out('MD5         : %s' % image_md5)
-                out('Payload :')
+                out('  #yellow#Date:#reset# %s' % time.asctime(time.gmtime(image_date)))
+                out('  #yellow#Description:#reset# %s' % image_description)
+                out('  #yellow#Author:#reset# %s' % image_author)
+                out('  #yellow#MD5:#reset# %s' % image_md5)
                 payloads = self.db.ask("SELECT md5, name, size FROM payload\
                                     WHERE image_md5 = ?", (image_md5,)).fetchall()
                 for payload_md5, payload_name, payload_size in payloads:
-                    out('   Name : %s' % payload_name)
-                    out('   Size : %s' % (istools.human_size(payload_size)))
-                    out('   MD5  : %s' % payload_md5)
-                    out('')
-            out('')
+                    out('  #light##yellow#Payload:#reset# %s' % payload_name)
+                    out('    #yellow#Size:#reset# %s' % (istools.human_size(payload_size)))
+                    out('    #yellow#MD5:#reset# %s' % payload_md5)
 
     def _remove_file(self, filename):
         '''
@@ -534,3 +530,14 @@ class RepositoryManager(object):
             if repo.has(name, version):
                 return repo.get(name, version)
         raise Exception("Unable to find %s v%s" % (name, version))
+
+    def show(self, verbose=False):
+        '''
+        Show repository inside manager
+        '''
+        for repo in self.repos:
+            repo.config.name
+            s = "#light##blue#%s#reset#"% repo.config.name
+            if verbose:
+                s += ' (%s)' % repo.config.path
+            out(s)