diff --git a/klaus/contrib/app_args.py b/klaus/contrib/app_args.py
index 7ee568914e4cbbedc024e5f0a06eb7e4efb73d44..ba02e53e65bf97ba80376f1df79dcc874dc16202 100644
--- a/klaus/contrib/app_args.py
+++ b/klaus/contrib/app_args.py
@@ -1,5 +1,14 @@
 import os
-from distutils.util import strtobool
+
+
+def strtobool(val):
+    val = val.lower()
+    if val in ("y", "yes", "t", "true", "on", "1"):
+        return 1
+    elif val in ("n", "no", "f", "false", "off", "0"):
+        return 0
+    else:
+        raise ValueError(f"invalid truth value {val!r}")
 
 
 def get_args_from_env():
diff --git a/setup.py b/setup.py
index b06a45f2501f21646014fff64b83949b8b526698..2d1f594c545b8631c2a0be0801114719a15aa19b 100644
--- a/setup.py
+++ b/setup.py
@@ -4,19 +4,6 @@ from setuptools import setup
 
 long_description = open(os.path.join(os.path.dirname(__file__), "README.rst")).read()
 
-
-def install_data_files_hack():
-    # This is a clever hack to circumvent distutil's data_files
-    # policy "install once, find never". Definitely a TODO!
-    # -- https://groups.google.com/group/comp.lang.python/msg/2105ee4d9e8042cb
-    from distutils.command.install import INSTALL_SCHEMES
-
-    for scheme in INSTALL_SCHEMES.values():
-        scheme["data"] = scheme["purelib"]
-
-
-install_data_files_hack()
-
 requires = [
     "flask",
     "Werkzeug>=0.15.0",