diff --git a/Changes b/Changes
index 5ebed25..f22e147 100644
--- a/Changes
+++ b/Changes
@@ -124,3 +124,8 @@ Revision history for Perl extension Switch.
         - patch by Father Chrysostomos
         - many warnings
         - recommendation to use given/when
+
+2.18  ?
+        - some versions of Filter::Util::Call have problems
+        - Add a prominent CAVEATS section to docs.
+        - Code for removal from core removed
diff --git a/MANIFEST b/MANIFEST
index dac29da..dfaf430 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -7,4 +7,4 @@ t/given.t
 t/nested.t
 t/switch.t
 META.yml                                 Module meta-data (added by MakeMaker)
-META.json                                Module JSON meta-data (added by MakeMaker)
+META.json                                Module JSON meta-data (added by MakeMaker)
diff --git a/META.json b/META.json
index 7d487dd..6274133 100644
--- a/META.json
+++ b/META.json
@@ -1,51 +1,52 @@
-{
-   "abstract" : "A switch statement for Perl, do not use if you can use given/when",
-   "author" : [
-      "Damian Conway",
-      "Rafael Garcia-Suarez",
-      "Alexandr Ciornii"
-   ],
-   "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.78, CPAN::Meta::Converter version 2.131490",
-   "license" : [
-      "perl_5"
-   ],
-   "meta-spec" : {
-      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
-      "version" : "2"
-   },
-   "name" : "Switch",
-   "no_index" : {
-      "directory" : [
-         "t",
-         "inc"
-      ]
-   },
-   "prereqs" : {
-      "build" : {
-         "requires" : {
-            "ExtUtils::MakeMaker" : "0"
-         }
-      },
-      "configure" : {
-         "requires" : {
-            "ExtUtils::MakeMaker" : "0"
-         }
-      },
-      "runtime" : {
-         "requires" : {
-            "Filter::Util::Call" : "0",
-            "Text::Balanced" : "2",
-            "if" : "0",
-            "perl" : "5.005"
-         }
-      }
-   },
-   "release_status" : "stable",
-   "resources" : {
-      "repository" : {
-         "url" : "http://github.com/chorny/Switch"
-      }
-   },
-   "version" : "2.17"
-}
+{
+   "abstract" : "A switch statement for Perl, do not use if you can use given/when. Also see Switch::Plain.",
+   "author" : [
+      "Damian Conway",
+      "Rafael Garcia-Suarez",
+      "Alexandr Ciornii"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version 2.150010",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : 2
+   },
+   "name" : "Switch",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "Carp" : "0",
+            "Filter::Util::Call" : "0",
+            "Text::Balanced" : "2",
+            "perl" : "5.005"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "repository" : {
+         "url" : "http://github.com/chorny/Switch"
+      }
+   },
+   "version" : "2.17",
+   "x_serialization_backend" : "JSON::PP version 4.06"
+}
diff --git a/META.yml b/META.yml
index 65efde1..59b64a1 100644
--- a/META.yml
+++ b/META.yml
@@ -1,29 +1,30 @@
----
-abstract: 'A switch statement for Perl, do not use if you can use given/when'
-author:
-  - Damian Conway
-  - Rafael Garcia-Suarez
-  - Alexandr Ciornii
-build_requires:
-  ExtUtils::MakeMaker: 0
-configure_requires:
-  ExtUtils::MakeMaker: 0
-dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.78, CPAN::Meta::Converter version 2.131490'
-license: perl
-meta-spec:
-  url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
-name: Switch
-no_index:
-  directory:
-    - t
-    - inc
-requires:
-  Filter::Util::Call: 0
-  Text::Balanced: 2
-  if: 0
-  perl: 5.005
-resources:
-  repository: http://github.com/chorny/Switch
-version: 2.17
+---
+abstract: 'A switch statement for Perl, do not use if you can use given/when. Also see Switch::Plain.'
+author:
+  - 'Damian Conway'
+  - 'Rafael Garcia-Suarez'
+  - 'Alexandr Ciornii'
+build_requires:
+  ExtUtils::MakeMaker: '0'
+configure_requires:
+  ExtUtils::MakeMaker: '0'
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version 2.150010'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: '1.4'
+name: Switch
+no_index:
+  directory:
+    - t
+    - inc
+requires:
+  Carp: '0'
+  Filter::Util::Call: '0'
+  Text::Balanced: '2'
+  perl: '5.005'
+resources:
+  repository: http://github.com/chorny/Switch
+version: '2.17'
+x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff --git a/Makefile.PL b/Makefile.PL
index e74456f..fe8654f 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,54 +1,64 @@
-use ExtUtils::MakeMaker;
-WriteMakefile1(
-    LICENSE => 'perl',
-    MIN_PERL_VERSION => '5.005',
-    META_MERGE => {
-        resources => {
-            repository => 'http://github.com/chorny/Switch',
-        },
-    },
-    #BUILD_REQUIRES => {
-    #},
-
-    NAME => q[Switch],
-    VERSION_FROM => q[Switch.pm],
-    ABSTRACT_FROM =>  => q[Switch.pm],
-    AUTHOR => ['Damian Conway', 'Rafael Garcia-Suarez', 'Alexandr Ciornii'],
-    PREREQ_PM => { 'Filter::Util::Call' => 0, 'Text::Balanced' => 2, 'if' => 0, },
-    INSTALLDIRS => ($] >= 5.00703 && $] < 5.011) ? 'perl' : 'site',
-    $^O =~/win/i ? (
-        dist => {
-            TAR      => 'ptar',
-            TARFLAGS => '-c -C -f',
-        },
-    ) : (),
-);
-
-sub WriteMakefile1 {  #Compatibility code for old versions of EU::MM. Written by Alexandr Ciornii, version 0.23. Added by eumm-upgrade.
-    my %params=@_;
-    my $eumm_version=$ExtUtils::MakeMaker::VERSION;
-    $eumm_version=eval $eumm_version;
-    die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
-    die "License not specified" if not exists $params{LICENSE};
-    if ($params{AUTHOR} and ref($params{AUTHOR}) eq 'ARRAY' and $eumm_version < 6.5705) {
-        $params{META_ADD}->{author}=$params{AUTHOR};
-        $params{AUTHOR}=join(', ',@{$params{AUTHOR}});
-    }
-    if ($params{TEST_REQUIRES} and $eumm_version < 6.64) {
-        $params{BUILD_REQUIRES}={ %{$params{BUILD_REQUIRES} || {}} , %{$params{TEST_REQUIRES}} };
-        delete $params{TEST_REQUIRES};
-    }
-    if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
-        #EUMM 6.5502 has problems with BUILD_REQUIRES
-        $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
-        delete $params{BUILD_REQUIRES};
-    }
-    delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52;
-    delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48;
-    delete $params{META_MERGE} if $eumm_version < 6.46;
-    delete $params{META_ADD} if $eumm_version < 6.46;
-    delete $params{LICENSE} if $eumm_version < 6.31;
-
-    WriteMakefile(%params);
-}
-
+
+use strict;
+my $filter_util_call_v = 0;
+eval {
+    require Filter::Util::Call;
+    if ($Filter::Util::Call::VERSION eq '1.50' || $Filter::Util::Call::VERSION eq '1.51') {
+        #these versions have problems with Switch
+        $filter_util_call_v = 1.53;
+    }
+};
+use ExtUtils::MakeMaker;
+WriteMakefile1(
+    LICENSE => 'perl',
+    MIN_PERL_VERSION => '5.005',
+    META_MERGE => {
+        resources => {
+            repository => 'http://github.com/chorny/Switch',
+        },
+    },
+    #BUILD_REQUIRES => {
+    #},
+
+    NAME => q[Switch],
+    VERSION_FROM => q[Switch.pm],
+    ABSTRACT_FROM =>  => q[Switch.pm],
+    AUTHOR => ['Damian Conway', 'Rafael Garcia-Suarez', 'Alexandr Ciornii'],
+    PREREQ_PM => { 'Filter::Util::Call' => $filter_util_call_v, 'Text::Balanced' => 2, 'Carp' => 0, },
+    INSTALLDIRS => ($] >= 5.00703 && $] < 5.011) ? 'perl' : 'site',
+    $^O =~/win/i ? (
+        dist => {
+            TAR      => 'ptar',
+            TARFLAGS => '-c -C -f',
+        },
+    ) : (),
+);
+
+sub WriteMakefile1 {  #Compatibility code for old versions of EU::MM. Written by Alexandr Ciornii, version 0.23. Added by eumm-upgrade.
+    my %params=@_;
+    my $eumm_version=$ExtUtils::MakeMaker::VERSION;
+    $eumm_version=eval $eumm_version;
+    die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
+    die "License not specified" if not exists $params{LICENSE};
+    if ($params{AUTHOR} and ref($params{AUTHOR}) eq 'ARRAY' and $eumm_version < 6.5705) {
+        $params{META_ADD}->{author}=$params{AUTHOR};
+        $params{AUTHOR}=join(', ',@{$params{AUTHOR}});
+    }
+    if ($params{TEST_REQUIRES} and $eumm_version < 6.64) {
+        $params{BUILD_REQUIRES}={ %{$params{BUILD_REQUIRES} || {}} , %{$params{TEST_REQUIRES}} };
+        delete $params{TEST_REQUIRES};
+    }
+    if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
+        #EUMM 6.5502 has problems with BUILD_REQUIRES
+        $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
+        delete $params{BUILD_REQUIRES};
+    }
+    delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52;
+    delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48;
+    delete $params{META_MERGE} if $eumm_version < 6.46;
+    delete $params{META_ADD} if $eumm_version < 6.46;
+    delete $params{LICENSE} if $eumm_version < 6.31;
+
+    WriteMakefile(%params);
+}
+
diff --git a/Switch.pm b/Switch.pm
index 8c2544e..a9cfea5 100644
--- a/Switch.pm
+++ b/Switch.pm
@@ -5,8 +5,6 @@ use strict;
 use vars qw($VERSION);
 use Carp;
 
-use if $] >= 5.011, 'deprecate';
-
 $VERSION = '2.17';
   
 
@@ -507,7 +505,7 @@ __END__
 
 =head1 NAME
 
-Switch - A switch statement for Perl, do not use if you can use given/when
+Switch - A switch statement for Perl, do not use if you can use given/when. Also see Switch::Plain.
 
 =head1 SYNOPSIS
 
@@ -525,6 +523,11 @@ Switch - A switch statement for Perl, do not use if you can use given/when
 	else		{ print "previous case not true" }
     }
 
+=head1 CAVEATS
+
+This module has not been deprecated.  It can be used by someone who knows its
+limitations.  However, in general, its use should be discouraged.
+
 =head1 BACKGROUND
 
 [Skip ahead to L<"DESCRIPTION"> if you don't care about the whys
@@ -875,6 +878,8 @@ May not work if sub prototypes are used (RT#33988).
 
 Regex captures in when are not available to code.
 
+Due to limitation of Filter::Util::Call (RT#101033), __DATA__ does not work.
+
 If your source file is longer then 1 million characters and you have a
 switch statement that crosses the 1 million (or 2 million, etc.)
 character boundary you will get mysterious errors. The workaround is to
diff --git a/debian/changelog b/debian/changelog
index 4c8a78d..857c4de 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-libswitch-perl (2.17-3) UNRELEASED; urgency=medium
+libswitch-perl (2.17+git20210129.1.d485a62-1) UNRELEASED; urgency=medium
 
   [ Salvatore Bonaccorso ]
   * debian/control: Use HTTPS transport protocol for Vcs-Git URI
@@ -24,7 +24,10 @@ libswitch-perl (2.17-3) UNRELEASED; urgency=medium
   [ gregor herrmann ]
   * debian/watch: use uscan version 4.
 
- -- Salvatore Bonaccorso <carnil@debian.org>  Sat, 30 Jan 2016 20:06:39 +0100
+  [ Debian Janitor ]
+  * New upstream snapshot.
+
+ -- Salvatore Bonaccorso <carnil@debian.org>  Sat, 07 May 2022 01:40:07 -0000
 
 libswitch-perl (2.17-2.1) unstable; urgency=medium
 
diff --git a/debian/patches/Switch.pm-vs-Filter.pm.patch b/debian/patches/Switch.pm-vs-Filter.pm.patch
index 2138e27..842d542 100644
--- a/debian/patches/Switch.pm-vs-Filter.pm.patch
+++ b/debian/patches/Switch.pm-vs-Filter.pm.patch
@@ -3,9 +3,11 @@ Author: Anton Berezin <tobez@freebsd.org>
 Bug-Debian: https://bugs.debian.org/762598
 Bug: https://rt.cpan.org/Public/Bug/Display.html?id=96753
 
---- a/Switch.pm	2014-08-01 14:47:54.000000000 +0200
-+++ b/Switch.pm	2014-08-01 14:47:57.000000000 +0200
-@@ -25,9 +25,11 @@ my ($Perl5, $Perl6) = (0,0);
+Index: libswitch-perl/Switch.pm
+===================================================================
+--- libswitch-perl.orig/Switch.pm
++++ libswitch-perl/Switch.pm
+@@ -23,9 +23,11 @@ my ($Perl5, $Perl6) = (0,0);
  
  sub import
  {