diff --git a/reclass/config.py b/reclass/config.py
index f1a8c0c..5eff1a4 100644
--- a/reclass/config.py
+++ b/reclass/config.py
@@ -32,6 +32,9 @@
     ret.add_option('-z', '--ignore-class-notfound', dest='ignore_class_notfound',
                    default=defaults.get('ignore_class_notfound', OPT_IGNORE_CLASS_NOTFOUND),
                    help='decision for not found classes [%default]')
+    ret.add_option('-x', '--ignore-class-notfound-regexp', dest='ignore_class_notfound_regexp',
+                   default=defaults.get('ignore_class_notfound_regexp', OPT_IGNORE_CLASS_NOTFOUND_REGEXP),
+                   help='regexp for not found classes [%default]')
     return ret
 
 
diff --git a/reclass/core.py b/reclass/core.py
index 02c8da6..9da0ddb 100644
--- a/reclass/core.py
+++ b/reclass/core.py
@@ -13,6 +13,7 @@
 import fnmatch
 import shlex
 import string
+import sys
 import yaml
 from reclass.settings import Settings
 from reclass.output.yaml_outputter import ExplicitDumper
@@ -26,6 +27,8 @@
         self._class_mappings = class_mappings
         self._settings = settings
         self._input_data = input_data
+        if self._settings.ignore_class_notfound:
+            self._cnf_r = re.compile('|'.join([x for x in self._settings.ignore_class_notfound_regexp]))
 
     @staticmethod
     def _get_timestamp():
@@ -101,7 +104,11 @@
                     class_entity = self._storage.get_class(klass, environment, self._settings)
                 except ClassNotFound as e:
                     if self._settings.ignore_class_notfound:
-                        continue
+                        if self._cnf_r.match(klass):
+                            if self._settings.ignore_class_notfound_warning:
+                                # TODO, add logging handler
+                                print >>sys.stderr, "[WARNING] Reclass class not found: '%s'. Skipped!" % klass
+                            continue
                     e.nodename = nodename
                     e.uri = entity.uri
                     raise
diff --git a/reclass/defaults.py b/reclass/defaults.py
index 4c2c903..82f49b2 100644
--- a/reclass/defaults.py
+++ b/reclass/defaults.py
@@ -18,6 +18,8 @@
 OPT_NO_REFS = False
 OPT_OUTPUT = 'yaml'
 OPT_IGNORE_CLASS_NOTFOUND = False
+OPT_IGNORE_CLASS_NOTFOUND_REGEXP = ['.*']
+OPT_IGNORE_CLASS_NOTFOUND_WARNING = True
 
 OPT_ALLOW_SCALAR_OVER_DICT = False
 OPT_ALLOW_SCALAR_OVER_LIST = False
diff --git a/reclass/settings.py b/reclass/settings.py
index 5db57da..987e707 100644
--- a/reclass/settings.py
+++ b/reclass/settings.py
@@ -20,6 +20,13 @@
         self.reference_sentinels = options.get('reference_sentinels', REFERENCE_SENTINELS)
         self.ignore_class_notfound = options.get('ignore_class_notfound', OPT_IGNORE_CLASS_NOTFOUND)
 
+        self.ignore_class_notfound_regexp = options.get('ignore_class_notfound_regexp', OPT_IGNORE_CLASS_NOTFOUND_REGEXP)
+        if isinstance(self.ignore_class_notfound_regexp, basestring):
+            self.ignore_class_notfound_regexp = [ self.ignore_class_notfound_regexp ]
+
+        self.ignore_class_notfound_warning = options.get('ignore_class_notfound_warning', OPT_IGNORE_CLASS_NOTFOUND_WARNING)
+
+
         self.ref_parser = reclass.values.parser_funcs.get_ref_parser(self.escape_character, self.reference_sentinels, self.export_sentinels)
         self.simple_ref_parser = reclass.values.parser_funcs.get_simple_ref_parser(self.escape_character, self.reference_sentinels, self.export_sentinels)
 
@@ -38,7 +45,9 @@
                and self.inventory_ignore_failed_node == other.inventory_ignore_failed_node \
                and self.inventory_ignore_failed_render == other.inventory_ignore_failed_render \
                and self.reference_sentinels == other.reference_sentinels \
-               and self.ignore_class_notfound == other.ignore_class_notfound
+               and self.ignore_class_notfound == other.ignore_class_notfound \
+               and self.ignore_class_notfound_regexp == other.ignore_class_notfound_regexp \
+               and self.ignore_class_notfound_warning == other.ignore_class_notfound_warning
 
     def __copy__(self):
         cls = self.__class__
diff --git a/reclass/tests/test_core.py b/reclass/tests/test_core.py
index eb9a5b4..9225756 100644
--- a/reclass/tests/test_core.py
+++ b/reclass/tests/test_core.py
@@ -39,7 +39,18 @@
             node = reclass.nodeinfo('class_notfound')
 
     def test_ignore_class_notfound(self):
-        reclass = self._core('01', opts={ 'ignore_class_notfound': True })
+        reclass = self._core('01', opts={ 'ignore_class_notfound': True, 'ignore_class_notfound_warning': False })
+        node = reclass.nodeinfo('class_notfound')
+        params = { 'node_test': 'class not found', '_reclass_': { 'environment': 'base', 'name': {'full': 'class_notfound', 'short': 'class_notfound' } } }
+        self.assertEqual(node['parameters'], params)
+
+    def test_raise_class_notfound_with_regexp(self):
+        reclass = self._core('01', opts={ 'ignore_class_notfound': True, 'ignore_class_notfound_warning': False, 'ignore_class_notfound_regexp': 'notmatched.*' })
+        with self.assertRaises(ClassNotFound):
+            node = reclass.nodeinfo('class_notfound')
+
+    def test_ignore_class_notfound_with_regexp(self):
+        reclass = self._core('01', opts={ 'ignore_class_notfound': True, 'ignore_class_notfound_warning': False, 'ignore_class_notfound_regexp': 'miss.*' })
         node = reclass.nodeinfo('class_notfound')
         params = { 'node_test': 'class not found', '_reclass_': { 'environment': 'base', 'name': {'full': 'class_notfound', 'short': 'class_notfound' } } }
         self.assertEqual(node['parameters'], params)
