diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt
index 08a22a4..2b0d291 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/TransformationContext.kt
@@ -35,6 +35,16 @@
     private val packagePrefixPattern = Pattern.compile(
         "^(" + config.restrictToPackagePrefixes.map { "($it)" }.joinToString("|") + ").*$")
 
+    /**
+     * Whether to use identity if type in our scope is missing instead of throwing an exception.
+     */
+    val useIdentityIfTypeIsMissing = rewritingSupportLib || isInReversedMode
+
+    /**
+     * Whether to skip verification of dependency version match in pom files.
+     */
+    val ignorePomVersionCheck = rewritingSupportLib || isInReversedMode
+
     /** Counter for [reportNoMappingFoundFailure] calls. */
     var mappingNotFoundFailuresCount = 0
         private set
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt
index 4603ae0..3a2ed7e 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/bytecode/CoreRemapperImpl.kt
@@ -56,8 +56,12 @@
             return result
         }
 
-        context.reportNoMappingFoundFailure()
-        Log.e(TAG, "No mapping for: " + type)
+        if (context.useIdentityIfTypeIsMissing) {
+            Log.i(TAG, "No mapping for %s - using identity", type)
+        } else {
+            context.reportNoMappingFoundFailure()
+            Log.e(TAG, "No mapping for: " + type)
+        }
         return type
     }
 
@@ -95,8 +99,13 @@
             return path.fileSystem.getPath(result.fullName + ".class")
         }
 
+        if (context.useIdentityIfTypeIsMissing) {
+            Log.i(TAG, "No mapping for: %s", type)
+            return path
+        }
+
         context.reportNoMappingFoundFailure()
-        Log.e(TAG, "No mapping for: " + type)
+        Log.e(TAG, "No mapping for: %s", type)
         return path
     }
 }
\ No newline at end of file
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt
index 99b08d5..45b695c 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/pom/PomScanner.kt
@@ -51,8 +51,7 @@
         session.pomFiles.forEach {
             it.logDocumentDetails()
 
-            // FYI: In reverse mode we don't validate versions
-            if (!context.isInReversedMode && !it.validate(context.config.pomRewriteRules)) {
+            if (!context.ignorePomVersionCheck && !it.validate(context.config.pomRewriteRules)) {
                 Log.e(TAG, "Version mismatch!")
                 validationFailuresCount++
             }
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt
index 28195a3..66a9d6e 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/proguard/ProGuardTypesMapper.kt
@@ -48,14 +48,19 @@
             }
 
             val result = config.typesMap.types[javaType]
-            if (result == null) {
-                context.reportNoProGuardMappingFoundFailure()
-                Log.e(TAG, "No mapping for: " + type)
+            if (result != null) {
+                Log.i(TAG, "  map: %s -> %s", type, result)
+                return result.toDotNotation()
+            }
+
+            if (context.useIdentityIfTypeIsMissing) {
+                Log.i(TAG, "No mapping for: %s - using identity")
                 return typeToReplace
             }
 
-            Log.i(TAG, "  map: %s -> %s", type, result)
-            return result.toDotNotation()
+            context.reportNoProGuardMappingFoundFailure()
+            Log.e(TAG, "No mapping for: %s", type)
+            return typeToReplace
         }
 
         // Type contains wildcards - try custom rules map
diff --git a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt
index 18c8994..74667d3 100644
--- a/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt
+++ b/jetifier/jetifier/core/src/main/kotlin/android/support/tools/jetifier/core/transform/resource/XmlResourcesTransformer.kt
@@ -167,8 +167,13 @@
             return result.toDotNotation()
         }
 
+        if (context.useIdentityIfTypeIsMissing) {
+            Log.i(TAG, "No mapping for: %s - using identity", type)
+            return typeName
+        }
+
         context.reportNoMappingFoundFailure()
-        Log.e(TAG, "No mapping for: " + type)
+        Log.e(TAG, "No mapping for: %s", type)
         return typeName
     }
 
