diff --git a/image_creator/os_type/__init__.py b/image_creator/os_type/__init__.py
index 630725571b5fb43c49ee8b25c1dc7f075ac9d765..00cbbf0bb875c3591dc7bbe5254e01f0ec50fb81 100644
--- a/image_creator/os_type/__init__.py
+++ b/image_creator/os_type/__init__.py
@@ -82,29 +82,25 @@ def sysprep(message, enabled=True, **kwargs):
 
 
 class SysprepParam(object):
-    """This class represents an system preparation parameter"""
+    """This class represents a system preparation parameter"""
 
-    def __init__(self, type, default, description):
+    def __init__(self, type, default, description, check=lambda x: x):
 
-        type_checker = {"posint": self._check_posint,
-                        "string": self._check_string,
-                        "file": self._check_fname,
-                        "dir": self._check_dname}
-
-        assert type in type_checker.keys(), "Invalid parameter type: %s" % type
+        assert hasattr(self, "_check_%s" % type), "Invalid type: %s" % type
 
         self.type = type
         self.default = default
         self.description = description
         self.value = default
         self.error = None
-
-        self._checker = type_checker[type]
+        self.check = check
 
     def set_value(self, value):
         """Update the value of the parameter"""
+
+        check_type = getattr(self, "_check_%s" % self.type)
         try:
-            self.value = self._checker(value)
+            self.value = self.check(check_type(value))
         except ValueError as e:
             self.error = e.message
             return False
@@ -126,7 +122,7 @@ class SysprepParam(object):
         """Check if a value is a string"""
         return str(value)
 
-    def _check_fname(self, value):
+    def _check_file(self, value):
         """Check if the value is a valid filename"""
 
         value = str(value)
@@ -146,7 +142,7 @@ class SysprepParam(object):
 
         raise ValueError("Invalid filename")
 
-    def _check_dname(self, value):
+    def _check_dir(self, value):
         """Check if the value is a valid directory"""
 
         value = str(value)
@@ -160,7 +156,7 @@ class SysprepParam(object):
         raise ValueError("Invalid dirname")
 
 
-def add_sysprep_param(name, type, default, descr):
+def add_sysprep_param(name, type, default, descr, check=lambda x: x):
     """Decorator for __init__ that adds the definition for a system preparation
     parameter in an instance of an os_type class
     """
@@ -171,8 +167,8 @@ def add_sysprep_param(name, type, default, descr):
             if not hasattr(self, 'sysprep_params'):
                 self.sysprep_params = {}
 
-            self.sysprep_params[name] = SysprepParam(type, default, descr)
-
+            self.sysprep_params[name] = SysprepParam(type, default, descr,
+                                                     check)
             init(self, *args, **kwargs)
         return inner
     return wrapper