diff --git a/image_creator/os_type/windows/__init__.py b/image_creator/os_type/windows/__init__.py
index 4928c8ed36b32ceccbb160f0e0e589788eb002c6..a79f8f43f2c18e22b3c6f131127a43d93707e551 100644
--- a/image_creator/os_type/windows/__init__.py
+++ b/image_creator/os_type/windows/__init__.py
@@ -91,7 +91,8 @@ VIRTIO = [
     "vioscsi",  # "VirtIO SCSI pass-through controller"
     "vioser",   # "VirtIO Serial Driver"
     "netkvm",   # "VirtIO Ethernet Adapter"
-    "balloon"]  # "Virtio Balloon Driver
+    "balloon",  # "VirtIO Balloon Driver
+    "viorng"]   # "VirtIO RNG Driver"
 
 
 def virtio_dir_check(dirname):
@@ -101,10 +102,12 @@ def virtio_dir_check(dirname):
     if not dirname:
         return ""  # value not set
 
+    critical = ('viostor', 'netkvm')
+    extension = ('cat', 'inf', 'sys')
     missing = []
 
     files = set(os.listdir(dirname))
-    for nam in ["%s.%s" % (b, e) for b in VIRTIO for e in 'cat', 'inf', 'sys']:
+    for nam in ["%s.%s" % (b, e) for b in critical for e in extension]:
         if nam not in files:
             missing.append(nam)
 
@@ -348,25 +351,18 @@ class Windows(OSBase):
 
         if self.sysprepped:
             raise FatalError(
-                "Microsoft's System Preparation Tool has ran on the Image. "
+                "Microsoft's System Preparation Tool has ran on the media. "
                 "Further image customization is not possible.")
 
-        virtio_dir = self.sysprep_params['virtio'].value
-
-        if len(self.virtio_state['viostor']) == 0 and not virtio_dir:
+        if len(self.virtio_state['viostor']) == 0:
             raise FatalError(
-                "The media has no VirtIO SCSI controller driver installed and "
-                "you have not specified a directory to retrieve the VirtIO "
-                "drivers from. Further image customization is not possible.")
+                "The media has no VirtIO SCSI controller driver installed. "
+                "Further image customization is not possible.")
 
-        if len(self.virtio_state['netkvm']) == 0 and not virtio_dir:
+        if len(self.virtio_state['netkvm']) == 0:
             raise FatalError(
-                "The media has no VirtIO Ethernet Adapter driver installed and"
-                " you have not specified a directory to retrieve the VirtIO "
-                "drivers from. Further image customization is not possible.")
-
-        if virtio_dir:
-            self._install_virtio_drivers(virtio_dir)
+                "The media has no VirtIO Ethernet Adapter driver installed. "
+                "Further image customization is not possible.")
 
         admin = self.sysprep_params['admin'].value
         timeout = self.sysprep_params['boot_timeout'].value
@@ -600,9 +596,14 @@ class Windows(OSBase):
 
         return state
 
-    def _install_virtio_drivers(self, dirname):
+    def install_virtio_drivers(self):
+        """Install the virtio drivers on the media"""
+
+        dirname = self.sysprep_params['virtio'].value
+        if not dirname:
+            raise FatalError('No directory hosting the VirtIO drivers defined')
 
-        self.out.output('Installing virtio drivers...', False)
+        self.out.output('Installing virtio drivers:')
 
         with self.mount(readonly=False, silent=True):
 
@@ -642,6 +643,7 @@ class Windows(OSBase):
         timeout = self.sysprep_params['boot_timeout'].value
         shutdown_timeout = self.sysprep_params['shutdown_timeout'].value
         virtio_timeout = self.sysprep_params['virtio_timeout'].value
+        self.out.output("Starting Windows VM ...", False)
         try:
             if self.check_version(6, 1) <= 0:
                 self.vm.start()
@@ -652,15 +654,15 @@ class Windows(OSBase):
 
             self.out.success("started (console on VNC display: %d)" %
                              self.vm.display)
-            self.out.output("Wait while os booting...", False)
+            self.out.output("Waiting for Windows to boot ...", False)
             if not self.vm.wait_on_serial(timeout):
                 raise FatalError("Windows VM booting timed out!")
             self.out.success('done')
-            self.out.output("wait while drivers installing...", False)
+            self.out.output("Performing the drivers installation ...", False)
             if not self.vm.wait_on_serial(virtio_timeout):
                 raise FatalError("Windows VirtIO installation timed out!")
             self.out.success('done')
-            self.out.output('wait while shutting down....', False)
+            self.out.output('Shutting down ...', False)
             self.vm.wait(shutdown_timeout)
             self.out.success('done')
         finally:
@@ -677,12 +679,13 @@ class Windows(OSBase):
             # Hopefully restart in safe mode. Newer windows will not boot from
             # a viostor device unless we initially start them in safe mode
             try:
-                self.out.output('Restarting Windows VM in safe mode...', False)
+                self.out.output('Rebooting Windows VM in safe mode ...', False)
                 self.vm.start()
                 self.vm.wait(timeout + shutdown_timeout)
                 self.out.success('done')
             finally:
                 self.vm.stop(1, fatal=False)
+        self.out.output("VirtIO drivers were successfully installed")
 
     def _install_viostor_driver(self, dirname):
         """Quick and dirty installation of the VirtIO SCSI controller driver.