diff --git a/src/emuvim/api/openstack/compute.py b/src/emuvim/api/openstack/compute.py
index ce6f636..865b770 100755
--- a/src/emuvim/api/openstack/compute.py
+++ b/src/emuvim/api/openstack/compute.py
@@ -96,8 +96,6 @@
         for image in self.dcli.images.list():
             if len(image.tags) > 0:
                 for t in image.tags:
-                    # only use short tag names for OSM compatibility
-                    t = t.replace(":latest", "")
                     if t not in self._images:
                         self._images[t] = Image(t)
         return self._images
diff --git a/src/emuvim/api/openstack/openstack_dummies/glance_dummy_api.py b/src/emuvim/api/openstack/openstack_dummies/glance_dummy_api.py
index 16241e0..1b066f0 100755
--- a/src/emuvim/api/openstack/openstack_dummies/glance_dummy_api.py
+++ b/src/emuvim/api/openstack/openstack_dummies/glance_dummy_api.py
@@ -99,14 +99,15 @@
     def get(self):
         LOG.debug("API CALL: %s GET" % str(self.__class__.__name__))
         try:
+            img_list = self.api.compute.images.values()
+            LOG.debug("Found {} Docker images: {}".format(
+                len(img_list), [i.name for i in img_list]))
             resp = dict()
             # resp['next'] = None
             resp['first'] = "/v2/images"
             resp['schema'] = "/v2/schemas/images"
             resp['images'] = list()
-            limit = 18
-            c = 0
-            for image in self.api.compute.images.values():
+            for image in img_list:
                 f = dict()
                 f['id'] = image.id
                 f['name'] = str(image.name).replace(":latest", "")
@@ -128,9 +129,6 @@
                 f['virtual_size'] = 1
                 f['marker'] = None
                 resp['images'].append(f)
-                c += 1
-                if c > limit:  # ugly hack to stop buggy glance client to do infinite requests
-                    break
             if "marker" in request.args:  # ugly hack to fix pageination of openstack client
                 resp['images'] = None
             return Response(json.dumps(resp), status=200,
