diff --git a/bin/is b/bin/is
index 6540ad3ec8a5830e451ab7ad2b16eb41a99aeebe..b52e8deee6f68ae89b74519d501a9c16deb62389 100755
--- a/bin/is
+++ b/bin/is
@@ -237,23 +237,20 @@ def c_copy(parser, args):
     '''
     Copy an image from a repository to another one
     '''
-    args.repo_filter = args.repo_src
+    # load repositories
     repoman = load_repositories(args)
-    repo_src = select_one_repository(repoman)
-    args.repo_filter = args.repo_dst
-    repoman = load_repositories(args)
-    repo_dst = select_one_repository(repoman)
-    if args.image_version is None:
-        args.image_version = repo_src.last(args.image)
-        if args.image_version == -1:
-            raise Exception("Unable to find last version of %s" % args.image)
-    arrow("Copying %s v%s from %s to %s" % (args.image, args.image_version,
-                                   repo_src.config.name, repo_dst.config.name))
+    srcrepo = repoman[args.repo_src]
+    dstrepo = repoman[args.repo_dst]
+    # load source image
+    srcimg = srcrepo.get(args.image, args.image_version)
+    # Advertise
+    arrow("Copying %s v%s from %s to %s" % (srcimg.name,
+                                             srcimg.version,
+                                             srcrepo.config.name,
+                                             dstrepo.config.name))
     arrowlevel(1)
-    pkg = repo_src.get(args.image, args.image_version)
-    repo_dst.add(pkg)
+    dstrepo.add(srcimg)
     arrowlevel(-1)
-    arrow("Done")
 
 def c_help(parser, args):
     '''
diff --git a/installsystems/repository.py b/installsystems/repository.py
index 2e4a94bacd0f50302d3209c28d1ebb79054cc043..54375bfa6c2e40f936652e66dc6aa68d56fe9ad5 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -240,10 +240,13 @@ class Repository(object):
         '''
         return self.db.ask("SELECT name,version FROM image WHERE name = ? AND version = ? LIMIT 1", (name,version)).fetchone() is not None
 
-    def get(self, name, version):
+    def get(self, name, version=None):
         '''
         Return an image from a name and version
         '''
+        # is no version take the last
+        if version is None:
+            version = self.last(name)
         # get file md5 from db
         r = self.db.ask("select md5 from image where name = ? and version = ? limit 1",
                         (name,version)).fetchone()
@@ -483,7 +486,15 @@ class RepositoryManager(object):
         '''
         Return a repostiory by its position in list
         '''
-        return self.repos[key]
+        if type(key) == int:
+            return self.repos[key]
+        elif type(key) == str:
+            for repo in self.repos:
+                if repo.config.name == key:
+                    return repo
+            raise Exception("No repository named: %s" % key)
+        else:
+            raise TypeError
 
     def register(self, config):
         '''