diff --git a/.clang-tidy b/.clang-tidy
index aa5e578a53b61611ad8ea619967ce466c75d79ef..237902b68d1ee31c6571a70151333fd6e3538ce6 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -19,3 +19,5 @@ WarningsAsErrors: >
   clang-*,
   readability-*,
   performance-*,
+
+HeaderFilterRegex: emper/*
diff --git a/emper/Actor.hpp b/emper/Actor.hpp
index da6c6551bd7df0d7e1c7443201ae2a5d13bac464..f2b1d57baeb154369acf2a324edb4accf5d848eb 100644
--- a/emper/Actor.hpp
+++ b/emper/Actor.hpp
@@ -60,7 +60,7 @@ class Actor {
 	void start() {
 		if (state.load(std::memory_order_acquire) != Stopped) return;
 
-		Fiber* actorFiber = Fiber::from(std::bind(&Actor::actorLoop, this));
+		Fiber* actorFiber = Fiber::from([this] { actorLoop(); });
 		if constexpr (callerEnvironment == CallerEnvironment::EMPER) {
 			runtime.schedule(*actorFiber);
 		} else {
diff --git a/emper/Context.hpp b/emper/Context.hpp
index 3428ccc203e9baabdc5c0d780f0a4f7b3e16824f..70727a12a9baf83b1658c0db506ac070885f706e 100644
--- a/emper/Context.hpp
+++ b/emper/Context.hpp
@@ -49,7 +49,7 @@ class ALIGN_TO_CACHE_LINE Context : Logger<LogSubsystem::C> {
 	// NOLINTNEXTLINE(modernize-avoid-c-arrays)
 	ALIGN_TO_CACHE_LINE char context[CONTEXT_SIZE];
 
-	friend auto operator<<(std::ostream&, const Context&) -> std::ostream&;
+	friend auto operator<<(std::ostream& strm, const Context& context) -> std::ostream&;
 
 	friend ContextManager;
 
diff --git a/emper/Fiber.hpp b/emper/Fiber.hpp
index 0449d3ba45369f55550d4d9e5bec1aa674d7c30f..01b6fba88c8408c3a1a40b9e149853c972a6947e 100644
--- a/emper/Fiber.hpp
+++ b/emper/Fiber.hpp
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
-// Copyright © 2020 Florian Schmaus
+// Copyright © 2020-2021 Florian Schmaus
 #pragma once
 
 #include <atomic>				// for atomic_uint, atomic, __atomic_base, memory...
@@ -110,7 +110,7 @@ class ALIGN_TO_CACHE_LINE Fiber : public Logger<LogSubsystem::F> {
 
 	void print() const;
 
-	friend auto operator<<(std::ostream&, const Fiber&) -> std::ostream&;
+	friend auto operator<<(std::ostream& strm, const Fiber& fiber) -> std::ostream&;
 
 	static inline auto from(fiber_fun_t function, void* arg) -> Fiber* {
 		return new Fiber(std::move(function), arg);
diff --git a/emper/io/IoContext.hpp b/emper/io/IoContext.hpp
index 943f6206e6bc3cf5a8f1c34db74748101a38760f..37081f41212058bc9aee13f139288cd5b8c559d4 100644
--- a/emper/io/IoContext.hpp
+++ b/emper/io/IoContext.hpp
@@ -37,7 +37,7 @@ class IoContext : public Logger<LogSubsystem::IO> {
 	static pthread_t globalCompleter;
 
 	/* function executed by the global completer thread */
-	static auto globalCompleterFunc(void *) -> void *;
+	static auto globalCompleterFunc(void *arg) -> void *;
 
 	// start the global completer thread
 	// this must be called after all worker IoContexts' eventfds are submitted
diff --git a/tests/AlarmActorTest.cpp b/tests/AlarmActorTest.cpp
index d3c5e340e4236e6009957958872eab559f8ad5ca..a0f962b60f994a2699a842b385ef24639a18c903 100644
--- a/tests/AlarmActorTest.cpp
+++ b/tests/AlarmActorTest.cpp
@@ -1,9 +1,8 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
-// Copyright © 2020 Florian Fischer
-#include <cstdlib>		 // for exit, EXIT_FAILURE, EXIT_SUC...
-#include <functional>	 // bind
-#include <iostream>		 // for operator<<, basic_ostream
-#include <thread>			 // for hardware_concurrency
+// Copyright © 2020 Florian Fischer, 2021 Florian Schmaus
+#include <cstdlib>	 // for exit, EXIT_FAILURE, EXIT_SUC...
+#include <iostream>	 // for operator<<, basic_ostream
+#include <thread>		 // for hardware_concurrency
 
 #include "Actor.hpp"										 // for Actor
 #include "BinaryPrivateSemaphore.hpp"		 // for BPS
diff --git a/tests/SimpleActorTest.cpp b/tests/SimpleActorTest.cpp
index 574468568fd08e172f288d0d89c7143bc7cd03d5..3415863c08a9332fbe78fc7eda651f96ecbfaa27 100644
--- a/tests/SimpleActorTest.cpp
+++ b/tests/SimpleActorTest.cpp
@@ -1,10 +1,9 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
-// Copyright © 2020 Florian Schmaus
-#include <atomic>			 // for atomic_thread_fence, memory_...
-#include <cstdint>		 // for uint64_t
-#include <cstdlib>		 // for exit, EXIT_FAILURE, EXIT_SUC...
-#include <functional>	 // for bind
-#include <iostream>		 // for operator<<, basic_ostream
+// Copyright © 2020-2021 Florian Schmaus
+#include <atomic>		 // for atomic_thread_fence, memory_...
+#include <cstdint>	 // for uint64_t
+#include <cstdlib>	 // for exit, EXIT_FAILURE, EXIT_SUC...
+#include <iostream>	 // for operator<<, basic_ostream
 
 #include "Actor.hpp"										 // for Actor
 #include "CountingPrivateSemaphore.hpp"	 // for CPS
diff --git a/tests/TellActorFromAnywhereTest.cpp b/tests/TellActorFromAnywhereTest.cpp
index bedfbd6d83a16d5e03e593eaa1642ecd7c07f2db..70800ac153e3fa9fce342659631138f7a75d805c 100644
--- a/tests/TellActorFromAnywhereTest.cpp
+++ b/tests/TellActorFromAnywhereTest.cpp
@@ -1,6 +1,5 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
-// Copyright © 2020 Florian Schmaus
-#include <functional>	 // for bind
+// Copyright © 2020-2021 Florian Schmaus
 #include <thread>
 
 #include "Actor.hpp"
diff --git a/tests/UnblockOnMainActorTest.cpp b/tests/UnblockOnMainActorTest.cpp
index 43c9def73ede3cdefd186a53325bc874686e853f..020db28f5dc8242054a729fb65b1613676f14a5d 100644
--- a/tests/UnblockOnMainActorTest.cpp
+++ b/tests/UnblockOnMainActorTest.cpp
@@ -1,11 +1,10 @@
 // SPDX-License-Identifier: LGPL-3.0-or-later
-// Copyright © 2020 Florian Fischer
-#include <atomic>			 // for atomic
-#include <cstdlib>		 // for exit, EXIT_FAILURE, EXIT_SUC...
-#include <ctime>			 // for nanosleep, timespec
-#include <functional>	 // bind
-#include <iostream>		 // for operator<<, basic_ostream
-#include <thread>			 // for this_thread
+// Copyright © 2020 Florian Fischer, 2021 Florian Schmaus
+#include <atomic>		 // for atomic
+#include <cstdlib>	 // for exit, EXIT_FAILURE, EXIT_SUC...
+#include <ctime>		 // for nanosleep, timespec
+#include <iostream>	 // for operator<<, basic_ostream
+#include <thread>		 // for this_thread
 
 #include "Actor.hpp"										 // for Actor
 #include "BinaryPrivateSemaphore.hpp"		 // for BPS