diff --git a/image_creator/dialog_menu.py b/image_creator/dialog_menu.py
index 2c1d58dfd8a839bda7b7af64726570e92795a73d..d14925f35a83f9f35e0ff79a9d2a9096f36f0e61 100644
--- a/image_creator/dialog_menu.py
+++ b/image_creator/dialog_menu.py
@@ -648,12 +648,17 @@ def sysprep_params(session):
 
     for i in range(len(fields)):
         param = needed[names[i]]
-        if param.validator(output[i]):
-            image.os.sysprep_params[names[i]] = output[i]
-        else:
-            d.msgbox("The value you provided for parameter: %s is not valid" %
-                     names[i], width=SMALL_WIDTH)
-            return False
+        try:
+            value = param.type(output[i])
+            if param.validate(value):
+                image.os.sysprep_params[names[i]] = value
+                continue
+        except ValueError:
+            pass
+
+        d.msgbox("The value you provided for parameter: `%s' is not valid" %
+                 names[i], width=SMALL_WIDTH)
+        return False
 
     return True
 
diff --git a/image_creator/dialog_wizard.py b/image_creator/dialog_wizard.py
index cfce374d169037194b0f85dd0edb94772ca2f978..c737e51087795fdb856d20e83192910a0a1a3370 100644
--- a/image_creator/dialog_wizard.py
+++ b/image_creator/dialog_wizard.py
@@ -350,12 +350,17 @@ def start_wizard(session):
     def sysprep_params_validate(answer):
         params = {}
         for i in range(len(answer)):
-            if needed[param_names[i]].validator(answer):
-                params[param_names[i]] = answer[i]
-            else:
-                session['dialog'].msgbox("Invalid value for parameter `%s'" %
+            try:
+                value = needed[param_names[i]].type(answer[i])
+                if needed[param_names[i]].validate(value):
+                    params[param_names[i]] = value
+                    continue
+            except ValueError:
+                pass
+
+            session['dialog'].msgbox("Invalid value for parameter `%s'" %
                                          param_names[i])
-                raise WizardReloadPage
+            raise WizardReloadPage
         return params
 
     def sysprep_params_display(params):
diff --git a/image_creator/os_type/__init__.py b/image_creator/os_type/__init__.py
index ddda45ee3c7b09d69e07b31bf44af3d027fe210b..6cecbb9b81f6f3ca52fb9e0cb7b77ae1f5bf111d 100644
--- a/image_creator/os_type/__init__.py
+++ b/image_creator/os_type/__init__.py
@@ -88,7 +88,7 @@ def sysprep(message, enabled=True, **kwargs):
     return wrapper
 
 
-def add_sysprep_param(name, default, description, validator=lambda x: True):
+def add_sysprep_param(name, type, default, descr, validate=lambda x: True):
     """Decorator for __init__ that adds the definition for a system preparation
     parameter in an instance of a os_type class
     """
@@ -97,7 +97,7 @@ def add_sysprep_param(name, default, description, validator=lambda x: True):
         def inner(self, *args, **kwargs):
             init(self, *args, **kwargs)
             self.needed_sysprep_params[name] = \
-                self.SysprepParam(default, description, validator)
+                self.SysprepParam(type, default, descr, validate)
         return inner
     return wrapper
 
@@ -118,7 +118,8 @@ def del_sysprep_param(name):
 class OSBase(object):
     """Basic operating system class"""
 
-    SysprepParam = namedtuple('SysprepParam', 'default description validator')
+    SysprepParam = namedtuple('SysprepParam',
+                              ['type', 'default', 'description', 'validate'])
 
     def __init__(self, image, **kargs):
         self.image = image
diff --git a/image_creator/os_type/windows.py b/image_creator/os_type/windows.py
index 5110e306e94c1a2a45f957434ca45167e82851e7..58d98c88017a1ce0ef49ebc6e7e9dfb4f3237c50 100644
--- a/image_creator/os_type/windows.py
+++ b/image_creator/os_type/windows.py
@@ -108,7 +108,7 @@ KMS_CLIENT_SETUP_KEYS = {
 class Windows(OSBase):
     """OS class for Windows"""
 
-    @add_sysprep_param('password', None, 'Image Administrator Password')
+    @add_sysprep_param('password', str, None, 'Image Administrator Password')
     def __init__(self, image, **kargs):
         super(Windows, self).__init__(image, **kargs)