diff --git a/android/gradle.properties b/android/gradle.properties
index 6c1d873456149a8611e43a05ae56e4f50c73274f..24add27a90a4accaf6a1ee28ec651d0d6bda4f8e 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.19
-app.versionCode=19
+app.versionName=0.0.20
+app.versionCode=20
diff --git a/fastlane/metadata/android/en-US/changelogs/20.txt b/fastlane/metadata/android/en-US/changelogs/20.txt
new file mode 100644
index 0000000000000000000000000000000000000000..da7e104554f3cc2e460177deb0f5673c79118fb7
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/20.txt
@@ -0,0 +1 @@
+Improve data and management script.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/20.txt b/fastlane/metadata/android/fr-FR/changelogs/20.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e6724acc357c8152f099d294cf605d0a8d189ca0
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/20.txt
@@ -0,0 +1 @@
+Améliorations des données et du script de gestion.
diff --git a/lib/data/game_data.dart b/lib/data/game_data.dart
index 8b8534168656bc358a79ccd251784327c7e26c54..1714ff804c7fa28d39ac6d5ca1f445801341a80e 100644
--- a/lib/data/game_data.dart
+++ b/lib/data/game_data.dart
@@ -73,7 +73,7 @@ class GameData {
         "ABEILLE": {
           "is": ["naturel", "solide", "vivant"],
           "isnot": ["artificiel", "gazeux", "inerte", "liquide"],
-          "na": ["liquide"]
+          "na": []
         },
         "AMPOULE": {
           "is": ["artificiel", "inerte", "solide"],
@@ -128,7 +128,7 @@ class GameData {
         "CANARD": {
           "is": ["naturel", "solide", "vivant"],
           "isnot": ["artificiel", "gazeux", "inerte", "liquide"],
-          "na": ["liquide"]
+          "na": []
         },
         "CASQUETTE": {
           "is": ["artificiel", "inerte", "solide"],
@@ -158,7 +158,7 @@ class GameData {
         "CONFITURE": {
           "is": ["artificiel", "inerte", "solide"],
           "isnot": ["gazeux", "liquide", "naturel", "vivant"],
-          "na": ["liquide"]
+          "na": []
         },
         "CORDE": {
           "is": ["artificiel", "inerte", "solide"],
@@ -178,12 +178,12 @@ class GameData {
         "FENÊTRE": {
           "is": ["artificiel", "inerte", "solide"],
           "isnot": ["gazeux", "liquide", "naturel", "vivant"],
-          "na": ["liquide"]
+          "na": []
         },
         "FOURMI": {
           "is": ["naturel", "solide", "vivant"],
           "isnot": ["artificiel", "gazeux", "inerte", "liquide"],
-          "na": ["liquide"]
+          "na": []
         },
         "FUSÉE": {
           "is": ["artificiel", "inerte", "solide"],
@@ -218,7 +218,7 @@ class GameData {
         "LICORNE": {
           "is": ["naturel", "solide", "vivant"],
           "isnot": ["artificiel", "gazeux", "inerte", "liquide"],
-          "na": ["naturel"]
+          "na": []
         },
         "LIVRE": {
           "is": ["artificiel", "inerte", "solide"],
@@ -238,7 +238,7 @@ class GameData {
         "NOEUD": {
           "is": ["artificiel", "inerte"],
           "isnot": ["gazeux", "liquide", "naturel", "vivant"],
-          "na": ["artificiel", "solide"]
+          "na": ["solide"]
         },
         "ORAGE": {
           "is": ["inerte", "naturel"],
@@ -348,7 +348,7 @@ class GameData {
         "TORTUE": {
           "is": ["naturel", "solide", "vivant"],
           "isnot": ["artificiel", "gazeux", "inerte", "liquide"],
-          "na": ["liquide"]
+          "na": []
         },
         "TROMPETTE": {
           "is": ["artificiel", "inerte", "solide"],
@@ -358,7 +358,7 @@ class GameData {
         "VACHE": {
           "is": ["naturel", "solide", "vivant"],
           "isnot": ["artificiel", "gazeux", "inerte", "liquide"],
-          "na": ["liquide"]
+          "na": []
         },
         "VOILIER": {
           "is": ["artificiel", "inerte", "solide"],
diff --git a/pubspec.yaml b/pubspec.yaml
index b65f68829a4a5cf7df66937f29d5483b46da92fe..f51af0c064c1844e650e78901493752b46dd0fff 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: A sorting game application.
 
 publish_to: 'none'
 
-version: 0.0.19+19
+version: 0.0.20+20
 
 environment:
   sdk: '^3.0.0'
diff --git a/scripts/data.json b/scripts/data.json
index f1143468b8db035028b96df99ed209b72a9a1423..ff31ed1271e63c9d6db63967325e6c5923b53755 100644
--- a/scripts/data.json
+++ b/scripts/data.json
@@ -99,9 +99,7 @@
           "inerte",
           "liquide"
         ],
-        "na": [
-          "liquide"
-        ]
+        "na": []
       },
       "AMPOULE": {
         "is": [
@@ -255,9 +253,7 @@
           "inerte",
           "liquide"
         ],
-        "na": [
-          "liquide"
-        ]
+        "na": []
       },
       "CASQUETTE": {
         "is": [
@@ -342,9 +338,7 @@
           "naturel",
           "vivant"
         ],
-        "na": [
-          "liquide"
-        ]
+        "na": []
       },
       "CORDE": {
         "is": [
@@ -401,9 +395,7 @@
           "naturel",
           "vivant"
         ],
-        "na": [
-          "liquide"
-        ]
+        "na": []
       },
       "FOURMI": {
         "is": [
@@ -417,9 +409,7 @@
           "inerte",
           "liquide"
         ],
-        "na": [
-          "liquide"
-        ]
+        "na": []
       },
       "FUSÉE": {
         "is": [
@@ -518,9 +508,7 @@
           "inerte",
           "liquide"
         ],
-        "na": [
-          "naturel"
-        ]
+        "na": []
       },
       "LIVRE": {
         "is": [
@@ -577,7 +565,6 @@
           "vivant"
         ],
         "na": [
-          "artificiel",
           "solide"
         ]
       },
@@ -895,9 +882,7 @@
           "inerte",
           "liquide"
         ],
-        "na": [
-          "liquide"
-        ]
+        "na": []
       },
       "TROMPETTE": {
         "is": [
@@ -925,9 +910,7 @@
           "inerte",
           "liquide"
         ],
-        "na": [
-          "liquide"
-        ]
+        "na": []
       },
       "VOILIER": {
         "is": [
diff --git a/scripts/manage_data.php b/scripts/manage_data.php
index ca5b0ee9d62e512fd6873b6d0d7c2829f4a229dc..d23127c8c36d9641e3b7f63292cec4c04380b3bb 100644
--- a/scripts/manage_data.php
+++ b/scripts/manage_data.php
@@ -67,6 +67,25 @@ function clean_item_mappings(array $itemMappings)
     $itemMappings['isnot'] = array_clean($itemMappings['isnot']);
     $itemMappings['na'] = array_clean($itemMappings['na']);
 
+    // remove duplicates
+    $itemMappings['is'] = array_clean($itemMappings['is']);
+
+    $tmpArray = [];
+    foreach (array_clean($itemMappings['isnot']) as $itemIsNot) {
+        if (!\in_array($itemIsNot, $itemMappings['is'])) {
+            $tmpArray[] = $itemIsNot;
+        }
+    }
+    $itemMappings['isnot'] = $tmpArray;
+
+    $tmpArray = [];
+    foreach (array_clean($itemMappings['na']) as $itemNa) {
+        if (!\in_array($itemNa, $itemMappings['is']) && !\in_array($itemNa, $itemMappings['isnot'])) {
+            $tmpArray[] = $itemNa;
+        }
+    }
+    $itemMappings['na'] = $tmpArray;
+
     return $itemMappings;
 }
 
@@ -133,7 +152,7 @@ foreach ($items as $item) {
 }
 
 // TODO: Should check/add unkown items from current mapping
-
+\ksort($mappingItems);
 $data['mapping'] = [
     'items' => $mappingItems,
 ];
@@ -315,15 +334,17 @@ $exitMainLoop = false;
 while ($exitMainLoop === false) {
     dump('');
 
+    $missing = find_missing_associations($mappingItems, $categories, $items);
+
     $menu = [
         '0: exit',
         '',
-        '1: show categories',
-        '2: show items',
-        '3: show exclusions',
-        '4: show mappings',
+        '1: show categories (' . \count($categories) . ' found)',
+        '2: show items (' . \count($items) . ' found)',
+        '3: show exclusions (' . \count($exclusions) . ' found)',
+        '4: show mappings (' . \count($mappingItems) . ' found)',
         '',
-        '5: edit mappings',
+        '5: complete mappings (' . \count($missing) . ' missing)',
     ];
     $answer = ask(\join("\n", $menu));