diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,9 @@
 /.coverage
 /htmlcov/
 
+# pytest cache
+/testing/.cache
+
 # Sphinx docs
 /docs/build/
 /docs/source/directives/
diff --git a/libtaskotron/ext/disposable/vm.py b/libtaskotron/ext/disposable/vm.py
--- a/libtaskotron/ext/disposable/vm.py
+++ b/libtaskotron/ext/disposable/vm.py
@@ -196,52 +196,55 @@
         return os.listdir(imagesdir)
 
     @classmethod
-    def get_latest(cls, release, template, imagesdir=None):
+    def get_latest(cls, release, flavor, arch='x86_64', imagesdir=None):
         """Search for the most recent image available on the system.
 
-        :param release: release of the image (e.g. ``f23``)
-        :param template: template of the image (e.g. ``minimal``)
+        :param release: release of the image (e.g. ``23``)
+        :param flavor: flavor of the image (e.g. ``minimal``)
         :param imagesdir: absolute path to directory containing the images, path from config is
                           used if None
+        :param arch: architecture of the image
 
         :return: testcloud.image.Image instance
-        :raises TaskotronImageError: if no such image for given release and template was found
+        :raises TaskotronImageError: if no such image for given release and flavor was found
         """
 
-        latest_metadata = cls.get_latest_metadata(release, template, imagesdir)
+        latest_metadata = cls.get_latest_metadata(release, flavor, arch, imagesdir)
 
         if not latest_metadata:
-            raise exc.TaskotronImageNotFoundError('No such image for release %s and template %s.' %
-                                                  (release, template))
+            raise exc.TaskotronImageNotFoundError('No such image for release %s and flavor %s.' %
+                                                  (release, flavor))
         else:
             return image.Image("file://" + os.path.join(imagesdir, latest_metadata['filename']))
 
     @classmethod
-    def get_latest_metadata(cls, release, template, imagesdir=None):
+    def get_latest_metadata(cls, release, flavor, arch='x86_64', imagesdir=None):
         """Search for the most recent image available on the system.
 
-        :param release: release of the image (e.g. ``f23``)
-        :param template: template of the image (e.g. ``minimal``)
+        :param release: release of the image (e.g. ``23``)
+        :param flavor: flavor of the image (e.g. ``minimal``)
         :param imagesdir: absolute path to directory containing the images, path from config is
                           used if None
+        :param arch: arch of the image (e.g. 'x86_64')
 
         :return: metadata of the most recent image
-        :rtype: dict {'date': str, 'version': str, 'release': str, 'filename': str}
+        :rtype: dict {'date': str, 'version': str, 'release': str, 'arch': str, 'filename': str}
         """
 
-        pattern = re.compile(r'^([0-9]{8})_([0-9]{2})-(.*?)-(.*?)\.qcow2$')
+        pattern = re.compile(r'^([0-9]{8})_([0-9]{4})-fedora-(.*?)-(.*?)-(.*?)\.qcow2$')
 
         images = []
         for filename in cls.get_all_filenames(imagesdir):
             m = pattern.match(filename)
             if m:
                 images.append({'date': m.group(1),
                                'version': m.group(2),
                                'release': m.group(3),
-                               'template': m.group(4),
+                               'flavor': m.group(4),
+                               'arch': m.group(5),
                                'filename': filename})
 
-        filtered = [i for i in images if i['release'] == release and i['template'] == template]
+        filtered = [i for i in images if i['release'] == release and i['flavor'] == flavor and i['arch'] == arch]
         if not filtered:
             return None
         else:
diff --git a/testing/test_vm.py b/testing/test_vm.py
--- a/testing/test_vm.py
+++ b/testing/test_vm.py
@@ -11,7 +11,7 @@
 from libtaskotron import exceptions as exc
 
 from testcloud import image, instance
-from testcloud.exceptions import TestcloudImageError, TestcloudInstanceError
+import testcloud.exceptions as tce
 
 
 class TestvmImagePrepare(object):
@@ -21,7 +21,7 @@
         self.ref_uuid = '1234-5678-9012'
 
     def should_raise_on_failure(self, monkeypatch):
-        stub_image = Mock(side_effect=TestcloudImageError())
+        stub_image = Mock(side_effect=tce.TestcloudImageError())
 
         monkeypatch.setattr(image, 'Image', stub_image)
 
@@ -75,7 +75,7 @@
 
     def should_raise_on_failure(self):
         stub_instance = Mock()
-        stub_instance.stop.side_effect = TestcloudInstanceError()
+        stub_instance.stop.side_effect = tce.TestcloudInstanceError()
 
         test_vm = vm.TestCloudMachine(self.ref_uuid)
 
@@ -98,7 +98,7 @@
 
     def should_raise_on_failure(self):
         stub_instance = Mock()
-        stub_instance.destroy.side_effect = TestcloudInstanceError()
+        stub_instance.destroy.side_effect = tce.TestcloudInstanceError()
 
         test_vm = vm.TestCloudMachine(self.ref_uuid)
 
@@ -163,36 +163,43 @@
 
     @pytest.fixture
     def setup(self, monkeypatch):
-        self.images = ['20151008_04-f23-cloud.qcow2',
+        self.images = ['20151008_0427-fedora-23-cloud-x86_64.qcow2',
                        'ubuntu-fabulous-fedora.qcow2',
-                       '20151008_02-f23-minimal.qcow2',
-                       '20151105_01-server.qcow2',
+                       '20151008_0223-fedora-23-minimal-i386.qcow2',
+                       '20151105_0100-server-x86_64.qcow2',
                        'el_capitan.iso',
-                       '20151008_01-server.qcow2',
-                       '20151007_05-f23-minimal.qcow2',
+                       '20151008_0100-server.qcow2',
+                       '20151007_0516-fedora-23-minimal-x86_64.qcow2',
+                       '20151007_0516-fedora-rawhide-minimal-x86_64.qcow2',
                        'windows10.raw',
-                       '20151008_03-f23-minimal.qcow2']
+                       '20151008_0315-fedora-23-minimal-i386.qcow2',
+                       '20151008_0315-fedora-23-minimal-x86_64.qcow2']
         self.stub_list_images = Dingus()
         monkeypatch.setattr(vm.Image, 'get_all_filenames', self.stub_list_images)
 
     def test_dir_populated(self):
         self.stub_list_images.return_value = self.images
 
-        assert vm.Image.get_latest_metadata('f23', 'minimal', '')['filename'] ==\
-            '20151008_03-f23-minimal.qcow2'
+        assert vm.Image.get_latest_metadata('23', 'minimal', 'i386', '')['filename'] ==\
+            '20151008_0315-fedora-23-minimal-i386.qcow2'
+        assert vm.Image.get_latest_metadata('23', 'minimal', 'x86_64', '')['filename'] ==\
+            '20151008_0315-fedora-23-minimal-x86_64.qcow2'
+
 
     def test_dir_populated_single(self):
         self.stub_list_images.return_value = self.images
 
-        assert vm.Image.get_latest_metadata('f23', 'cloud', '')['filename'] ==\
-            '20151008_04-f23-cloud.qcow2'
+        assert vm.Image.get_latest_metadata('23', 'cloud', 'x86_64', '')['filename'] ==\
+            '20151008_0427-fedora-23-cloud-x86_64.qcow2'
+        assert vm.Image.get_latest_metadata('rawhide', 'minimal', 'x86_64', '')['filename'] ==\
+            '20151007_0516-fedora-rawhide-minimal-x86_64.qcow2'
 
     def test_dir_empty(self):
         self.stub_list_images.return_value = []
 
-        assert vm.Image.get_latest_metadata('f23', 'minimal', '') is None
+        assert vm.Image.get_latest_metadata('23', 'minimal', '') is None
 
     def test_no_such_image(self):
         self.stub_list_images.return_value = self.images
 
-        assert vm.Image.get_latest_metadata('f69', 'ultimate', '') is None
+        assert vm.Image.get_latest_metadata('69', 'ultimate', '') is None

