diff --git a/Makefile.PL b/Makefile.PL
index 75c8dbc..62930a7 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -3,6 +3,7 @@ use ExtUtils::MakeMaker;
 WriteMakefile(
     'NAME'         => 'Net::DNS::Fingerprint',
     'VERSION_FROM' => 'lib/Net/DNS/Fingerprint.pm',
+    'MIN_PERL_VERSION' => '5.10.0',
     'PREREQ_PM'    => { Net::DNS => 0.42 },
     'EXE_FILES'    => ["apps/fpdns"],
     'NO_META'      => 1,
diff --git a/debian/changelog b/debian/changelog
index 48b1eec..33b010f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+net-dns-fingerprint (20190131+git20200626.1.2a898bf+ds-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Fri, 02 Sep 2022 22:43:38 -0000
+
 net-dns-fingerprint (20190131-1) sid; urgency=medium
 
   * New upstream release (Closes: #896637)
diff --git a/debian/patches/01-Fingerprint.pm.patch b/debian/patches/01-Fingerprint.pm.patch
index bd2d322..3dc39fc 100644
--- a/debian/patches/01-Fingerprint.pm.patch
+++ b/debian/patches/01-Fingerprint.pm.patch
@@ -1,11 +1,11 @@
 From: Thorsten Alteholz  <debian@alteholz.de>
 Subject: Make separator configurable
 
-Index: net-dns-fingerprint-20190131/lib/Net/DNS/Fingerprint.pm
+Index: net-dns-fingerprint/lib/Net/DNS/Fingerprint.pm
 ===================================================================
---- net-dns-fingerprint-20190131.orig/lib/Net/DNS/Fingerprint.pm	2019-02-05 11:47:35.352372200 +0100
-+++ net-dns-fingerprint-20190131/lib/Net/DNS/Fingerprint.pm	2019-02-05 11:47:35.340372200 +0100
-@@ -43,6 +43,7 @@
+--- net-dns-fingerprint.orig/lib/Net/DNS/Fingerprint.pm
++++ net-dns-fingerprint/lib/Net/DNS/Fingerprint.pm
+@@ -44,6 +44,7 @@ my %default = (
      debug    => 0,
      qversion => 0,
      qchaos   => 0,
@@ -13,7 +13,7 @@ Index: net-dns-fingerprint-20190131/lib/Net/DNS/Fingerprint.pm
  );
  
  my $versionlength = 40;
-@@ -1997,7 +1998,7 @@
+@@ -2040,7 +2041,7 @@ sub string {
  
      push @s, $r{state} if (defined $r{state} && $self->{debug});
  
diff --git a/lib/Net/DNS/Fingerprint.pm b/lib/Net/DNS/Fingerprint.pm
index a03d103..744d49c 100644
--- a/lib/Net/DNS/Fingerprint.pm
+++ b/lib/Net/DNS/Fingerprint.pm
@@ -29,11 +29,12 @@
 
 package Net::DNS::Fingerprint;
 
+use 5.010;
 use strict;
 use warnings;
 use Net::DNS;
 
-our $VERSION = "0.10.0";
+our $VERSION = "0.12.0";
 
 my %default = (
     source   => undef,
@@ -114,9 +115,14 @@ my @iq = (
     "1,UPDATE,0,0,1,1,0,0,FORMERR,0,0,0,0",           #iq20
     "1,QUERY,0,0,1,1,0,0,NOERROR,.+,.+,.+,.+",        #iq21
     "1,QUERY,0,1,1,1,0,0,NOERROR,.+,.+,.+,.+",        #iq22
-    "1,QUERY,0,0,0,0,0,0,REFUSED,0,0,0,0",            #iq23
-    "1,QUERY,0,0,1,1,0,0,REFUSED,1,0,0,0",            #iq24
-    "1,QUERY,0,0,1,1,0,0,NXDOMAIN,.+,.+,.+,.+",       #iq25
+    "1,QUERY,0,0,0,.+,0,0,REFUSED,.+,0,0,0",          #iq23
+    "1,QUERY,0,0,0,0,0,0,REFUSED,0,0,0,0",            #iq24
+    "1,QUERY,0,0,0,1,0,0,REFUSED,1,0,0,0",            #iq25
+    "1,QUERY,0,0,1,1,0,0,REFUSED,1,0,0,0",            #iq26
+    "1,QUERY,0,0,1,1,0,0,NXDOMAIN,.+,.+,.+,.+",       #iq27
+    "1,QUERY,0,0,1,0,0,0,FORMERR,1,0,0,0",            #iq28
+    "1,QUERY,0,0,0,0,0,0,REFUSED,1,0,0,0",            #iq29
+    "1,$NOTIFY,0,0,1,0,0,0,FORMERR,0,0,0,0",          #iq30
 );
 
 my @ruleset = (
@@ -141,6 +147,21 @@ my @ruleset = (
             version => "1.0 -- 1.0.1"
         },
     },
+    {
+        fingerprint => $iq[29],
+        header      => $qy[2],
+        query       => $nct[2],
+        ruleset     => [
+            {
+                fingerprint => $iq[30],
+                result      => {
+                    vendor  => "NLnetLabs",
+                    product => "NSD",
+                    version => "4.1.10 -- 4.3.1"
+                },
+            },
+        ],
+    },
     {
         fingerprint => $iq[3],
         header      => $qy[1],
@@ -375,43 +396,65 @@ my @ruleset = (
     },
     {
         fingerprint => $iq[23],
-        header      => $qy[10],
-        query       => $nct[10],
+        header      => $qy[0],
+        query       => $nct[0],
         ruleset     => [
             {
                 fingerprint => $iq[24],
-                result      => {
-                    vendor  => "NLnetLabs",
-                    product => "Unbound",
-                    version => "1.3.0 -- 1.4.0"
-                },
-            },
-            {
-                fingerprint => $iq[25],
-                header      => $qy[11],
-                query       => $nct[11],
+                header      => $qy[10],
+                query       => $nct[10],
                 ruleset     => [
                     {
-                        fingerprint => "header section incomplete",
+                        fingerprint => $iq[26],
                         result      => {
                             vendor  => "NLnetLabs",
                             product => "Unbound",
-                            version => "1.4.1 -- 1.4.9"
+                            version => "1.3.0 -- 1.4.0"
                         },
                     },
                     {
-                        fingerprint => $iq[19],
+                        fingerprint => $iq[27],
+                        header      => $qy[11],
+                        query       => $nct[11],
+                        ruleset     => [
+                            {
+                                fingerprint => "header section incomplete",
+                                result      => {
+                                    vendor  => "NLnetLabs",
+                                    product => "Unbound",
+                                    version => "1.4.1 -- 1.4.9"
+                                },
+                            },
+                            {
+                                fingerprint => $iq[19],
+                                result      => {
+                                    vendor  => "NLnetLabs",
+                                    product => "Unbound",
+                                    version => "1.4.10 -- 1.6.0"
+                                },
+                            },
+                            { fingerprint => ".+", state => "q0r3r23q10r25q11r?" },
+                        ]
+                    },
+                ],
+            },
+            {
+                fingerprint => $iq[25],
+                header      => $qy[10],
+                query       => $nct[10],
+                ruleset     => [
+                    {
+                        fingerprint => $iq[28],
                         result      => {
                             vendor  => "NLnetLabs",
                             product => "Unbound",
-                            version => "1.4.10 -- 1.4.12"
+                            version => "1.7.0 -- 1.9.6"
                         },
                     },
-                    { fingerprint => ".+", state => "q0r3r23q10r25q11r?" },
-                ]
+                ],
             },
         ]
-    },
+    }
 );
 
 my @qy_old = (
@@ -2190,12 +2233,21 @@ sub fp2header {
 }
 
 sub probe {
+    state %cache = ();
+
     my $self = shift;
 
     my $qserver = shift;
     my $qport   = shift;
     my $qheader = shift;
-    my @qstring = split(/ /, shift);
+    my $qstring = shift;
+    my $cachekey = "$qserver:$qport/$qheader.$qstring";
+
+    # avoid repeating queries, see if we already got this
+    # question answered.
+    return @{$cache{$cachekey}} if exists $cache{$cachekey};
+
+    my @qstring = split(/ /, $qstring);
 
     my $packet = new Net::DNS::Packet;
     fp2header($qheader, $packet->header);
@@ -2226,7 +2278,11 @@ sub probe {
         print STDERR "\n";
     }
 
-    return ($answer, $resolver->errorstring);
+    # Add to cache, but only if we actually got a response
+    my @ret = ($answer, $resolver->errorstring);
+    $cache{$cachekey} = \@ret if defined $ret[0];
+
+    return @ret;
 }
 
 sub version {
diff --git a/lib/Net/DNS/REPLACE b/lib/Net/DNS/REPLACE
deleted file mode 100644
index 597030d..0000000
--- a/lib/Net/DNS/REPLACE
+++ /dev/null
@@ -1,52 +0,0 @@
-After you generate a perl tree from the generator, go through it and replace the
-non-responses with the right error.
-
--------------------------------------------------------------------------------
-
-"0,QUERY,0,0,1,0,0,0,NOERROR,1,0,0,0" => "header section incomplete" #Unbound
-
-"0.+" => "query timed out" #Windows Server(s)
-
-
--------------------------------------------------------------------------------
-e.g
-
-If you have the responses
-
-"0,NS_NOTIFY_OP,0,1,1,0,1,1,NOTIMP,1,0,0,0",    #iq7
-"1,IQUERY,0,0,0,1,0,0,NOTIMP,1,0,0,0",    #iq8
-"0,IQUERY,0,0,0,1,1,1,NOERROR,1,0,0,0",    #iq9
-"1,QUERY,0,0,1,0,0,0,NOTIMP,1,0,0,0",    #iq10
-"0,QUERY,0,0,1,0,0,0,NOERROR,1,0,0,0",    #iq11
-
-
-part of the tree
-
-{ fingerprint => $iq[8], result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2003"}, },
-{ fingerprint=>$iq[9], header=>$qy[4], query=>$nct[4], ruleset => [
-{ fingerprint => $iq[10], result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2003 R2"}, },
-{ fingerprint=>$iq[11], header=>$qy[5], query=>$nct[5], ruleset => [
-{ fingerprint => $iq[11], result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2008 R2"}, },
-{ fingerprint => $iq[10], result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2008"}, },
-{ fingerprint => ".+", state=>"q0r3q1r3q2r7q3r9q4r11q5r?" },
-
-
-should become
-
-{ fingerprint => $iq[8], result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2003"}, },
-{ fingerprint=>"query timed out", header=>$qy[4], query=>$nct[4], ruleset => [
-{ fingerprint => $iq[10], result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2003 R2"}, },
-{ fingerprint=>"query timed out", header=>$qy[5], query=>$nct[5], ruleset => [
-{ fingerprint => "query timed out", result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2008 R2"}, },
-{ fingerprint => $iq[10], result => { vendor =>"Microsoft", product=>"Windows DNS", version=>"2008"}, },
-{ fingerprint => ".+", state=>"q0r3q1r3q2r7q3r9q4r11q5r?" },
-
-if you follow the replace instructions
-
-There is an unresolved bug where BIND 9.4.0 -- 9.5.1 identifies as BIND 9.6.0, this is
-temporarily fixed by replacing
-{ fingerprint => $iq[21], result => { vendor =>"ISC", product=>"BIND", version=>"9.6.0"}, },
-
-with
-
-{ fingerprint => $iq[21], result => { vendor =>"ISC", product=>"BIND", version=>"9.6.0 OR 9.4.0 -- 9.5.1"}, },
\ No newline at end of file