diff --git a/.ci/Makefile b/.ci/Makefile
index 08ca2b1..d78fde6 100644
--- a/.ci/Makefile
+++ b/.ci/Makefile
@@ -45,17 +45,25 @@
 #bufferinfo/BufferInfoMapperMetadata.cpp
 #utils/hwcutils.cpp
 
-TIDY_FILES_H := \
-    drm/DrmFbImporter.h \
-    drm/DrmUnique.h \
-    utils/UniqueFd.h \
-    utils/log.h \
-    utils/properties.h \
-
-TIDY_FILES_CPP := \
-
-TIDY_COARSE_CHECKS := * \
+TIDY_CHECKS_NORMAL := * \
     -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \
+    -llvm-header-guard \
+    -cppcoreguidelines-special-member-functions \
+    -cppcoreguidelines-pro-type-cstyle-cast \
+    -cppcoreguidelines-macro-usage \
+    -cppcoreguidelines-avoid-c-arrays \
+    -google-readability-braces-around-statements \
+    -google-readability-casting \
+    -misc-non-private-member-variables-in-classes \
+    -modernize-avoid-c-arrays \
+    -modernize-use-trailing-return-type \
+    -readability-braces-around-statements \
+    -readability-convert-member-functions-to-static \
+    -readability-implicit-bool-conversion \
+    -readability-identifier-naming \
+
+TIDY_CHECKS_COARSE := \
+    $(TIDY_CHECKS_NORMAL) \
     -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
     -cppcoreguidelines-pro-bounds-constant-array-index \
     -cppcoreguidelines-pro-bounds-pointer-arithmetic \
@@ -77,6 +85,75 @@
     -readability-magic-numbers \
     -readability-use-anyofallof \
 
+TIDY_FILES := \
+    drm/UEventListener.h:COARSE                        \
+    drm/DrmFbImporter.h:FINE                           \
+    drm/ResourceManager.h:                             \
+    drm/DrmMode.h:                                     \
+    drm/DrmDevice.h:                                   \
+    drm/DrmProperty.h:                                 \
+    drm/DrmConnector.h:                                \
+    drm/DrmCrtc.h:                                     \
+    drm/VSyncWorker.h:                                 \
+    drm/DrmPlane.h:                                    \
+    drm/DrmUnique.h:FINE                               \
+    drm/DrmEncoder.h:                                  \
+    bufferinfo/legacy/BufferInfoMinigbm.h:             \
+    bufferinfo/legacy/BufferInfoLibdrm.h:              \
+    bufferinfo/legacy/BufferInfoMaliMediatek.h:        \
+    bufferinfo/legacy/BufferInfoMaliHisi.h:            \
+    bufferinfo/legacy/BufferInfoImagination.h:         \
+    bufferinfo/legacy/BufferInfoMaliMeson.h:           \
+    bufferinfo/BufferInfoGetter.h:                     \
+    bufferinfo/BufferInfoMapperMetadata.h:             \
+    include/drmhwcgralloc.h:                           \
+    include/drmhwcomposer.h:                           \
+    utils/Worker.h:                                    \
+    utils/UniqueFd.h:FINE                              \
+    utils/autolock.h:                                  \
+    utils/log.h:FINE                                   \
+    utils/properties.h:FINE                            \
+    compositor/DrmDisplayCompositor.h:                 \
+    compositor/Planner.h:                              \
+    compositor/DrmDisplayComposition.h:                \
+    backend/BackendManager.h:                          \
+    backend/BackendClient.h:                           \
+    backend/Backend.h:                                 \
+    backend/BackendRCarDu.h:                           \
+    DrmHwcTwo.h:                                       \
+
+TIDY_FILES += \
+    backend/BackendClient.cpp:COARSE                       \
+    backend/Backend.cpp:COARSE                             \
+    backend/BackendManager.cpp:COARSE                      \
+    backend/BackendRCarDu.cpp:COARSE                       \
+    bufferinfo/BufferInfoGetter.cpp:COARSE                 \
+    bufferinfo/legacy/BufferInfoImagination.cpp:COARSE     \
+    bufferinfo/legacy/BufferInfoLibdrm.cpp:COARSE          \
+    bufferinfo/legacy/BufferInfoMaliHisi.cpp:COARSE        \
+    bufferinfo/legacy/BufferInfoMaliMediatek.cpp:COARSE    \
+    bufferinfo/legacy/BufferInfoMaliMeson.cpp:COARSE       \
+    bufferinfo/legacy/BufferInfoMinigbm.cpp:COARSE         \
+    compositor/DrmDisplayComposition.cpp:COARSE            \
+    compositor/DrmDisplayCompositor.cpp:COARSE             \
+    compositor/Planner.cpp:COARSE                          \
+    drm/DrmConnector.cpp:COARSE                            \
+    drm/DrmCrtc.cpp:COARSE                                 \
+    drm/DrmDevice.cpp:COARSE                               \
+    drm/DrmEncoder.cpp:COARSE                              \
+    drm/DrmFbImporter.cpp:COARSE                           \
+    drm/DrmMode.cpp:COARSE                                 \
+    drm/DrmPlane.cpp:COARSE                                \
+    drm/DrmProperty.cpp:COARSE                             \
+    DrmHwcTwo.cpp:COARSE                                   \
+    drm/ResourceManager.cpp:COARSE                         \
+    drm/UEventListener.cpp:COARSE                          \
+    drm/VSyncWorker.cpp:COARSE                             \
+    tests/worker_test.cpp:COARSE                           \
+    utils/autolock.cpp:COARSE                              \
+    utils/Worker.cpp:COARSE                                \
+
+
 .PHONY: all build tidy tidy-fine clean
 
 all: build tidy tidy-fine
@@ -87,21 +164,10 @@
 _OBJ := $(BUILD_FILES:.cpp=.o)
 OBJ  := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
 
-_TIDY_TS := $(BUILD_FILES:.cpp=.cpp.t_ts)
-TIDY_TS := $(patsubst %,$(OUT_DIR)/%,$(_TIDY_TS))
-
-_FINE_TIDY_TS := $(TIDY_FILES_CPP:.cpp=.cpp,ft_ts)
-_FINE_TIDY_TS += $(TIDY_FILES_H:.h=.h.ft_ts)
-FINE_TIDY_TS  := $(patsubst %,$(OUT_DIR)/%,$(_FINE_TIDY_TS))
-
 DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
 
 build: $(OBJ)
 
-tidy: $(TIDY_TS) build
-
-tidy-fine: $(FINE_TIDY_TS) build
-
 CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
 
 $(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
@@ -112,34 +178,37 @@
 	mkdir -p $(dir $@)
 	$(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@
 
+# TIDY
 space := $(subst ,, )
 comma := ,
 
-# TIDY
-define exec-tidy
-	mkdir -p $(dir $@)
-	$(CLANG_TIDY) $< --checks="$(subst $(space),$(comma),$(strip $(TIDY_COARSE_CHECKS)))" -- -x c++ $(CXXARGS)
-	touch $@
+TIDY_ARGS_FINE :=
+TIDY_ARGS_NONE := --checks="-*,llvm-include-order"
+TIDY_ARGS_     := --checks="-*,llvm-include-order"
+TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))"
+TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))"
+
+define process-tidy
+
+_TARG := $(OUT_DIR)/$1.tidy.ts
+_DEP := $(SRC_DIR)/$1
+
+TIDY_DEPS += $(_TARG)
+
+TIDY_ARGS:=$(TIDY_ARGS_$2)
+
+$(_TARG): $(_DEP)
+	mkdir -p $(dir $(_TARG))
+	$(CLANG_TIDY) $(_DEP) $(TIDY_ARGS) -- -x c++ $(CXXARGS)
+	touch $(_TARG)
+
 endef
 
-$(OUT_DIR)/%.h.t_ts: $(SRC_DIR)/%.h
-	$(exec-tidy)
+$(foreach pair,$(TIDY_FILES),$(eval $(call process-tidy,$(word 1, $(subst :, ,$(pair))),$(word 2, $(subst :, ,$(pair))))))
 
-$(OUT_DIR)/%.cpp.t_ts: $(SRC_DIR)/%.cpp $(OUT_DIR)/%.o
-	$(exec-tidy)
+#$(warning $(TIDY_DEPS))
 
-# TIDY-FINE
-define exec-tidy-fine
-	mkdir -p $(dir $@)
-	$(CLANG_TIDY) $< -- -x c++ $(CXXARGS)
-	touch $@
-endef
-
-$(OUT_DIR)/%.cpp.ft_ts: $(SRC_DIR)/%.cpp $(OUT_DIR)/%.o
-	$(exec-tidy-fine)
-
-$(OUT_DIR)/%.h.ft_ts: $(SRC_DIR)/%.h
-	$(exec-tidy-fine)
+tidy: $(TIDY_DEPS)
 
 ifneq ($(MAKECMDGOALS), clean)
 -include $(DEPS)
diff --git a/.clang-tidy b/.clang-tidy
index 4bd8ff7..300a2fe 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -6,7 +6,6 @@
     *,
     -fuchsia*,
     -llvm*,
-    -concurrency-mt-unsafe,
     -cppcoreguidelines-pro-type-vararg, -hicpp-vararg,
     -hicpp-signed-bitwise,
 
diff --git a/DrmHwcTwo.cpp b/DrmHwcTwo.cpp
index 45fb958..ad9c2c2 100644
--- a/DrmHwcTwo.cpp
+++ b/DrmHwcTwo.cpp
@@ -1083,6 +1083,14 @@
 
 #endif /* PLATFORM_SDK_VERSION > 27 */
 
+const Backend *DrmHwcTwo::HwcDisplay::backend() const {
+  return backend_.get();
+}
+
+void DrmHwcTwo::HwcDisplay::set_backend(std::unique_ptr<Backend> backend) {
+  backend_ = std::move(backend);
+}
+
 HWC2::Error DrmHwcTwo::HwcLayer::SetCursorPosition(int32_t /*x*/,
                                                    int32_t /*y*/) {
   return HWC2::Error::None;
diff --git a/DrmHwcTwo.h b/DrmHwcTwo.h
index eb74f32..beb2e5f 100644
--- a/DrmHwcTwo.h
+++ b/DrmHwcTwo.h
@@ -267,12 +267,8 @@
     int active_config_id_ = 0;
     int preferred_config_id_ = 0;
 
-    const Backend *backend() const {
-      return backend_.get();
-    }
-    void set_backend(std::unique_ptr<Backend> backend) {
-      backend_ = std::move(backend);
-    }
+    const Backend *backend() const;
+    void set_backend(std::unique_ptr<Backend> backend);
 
     const std::vector<DrmPlane *> &primary_planes() const {
       return primary_planes_;
diff --git a/drm/DrmDevice.cpp b/drm/DrmDevice.cpp
index 35ed45d..8dee817 100644
--- a/drm/DrmDevice.cpp
+++ b/drm/DrmDevice.cpp
@@ -30,6 +30,7 @@
 #include <sstream>
 #include <string>
 
+#include "drm/DrmPlane.h"
 #include "utils/log.h"
 #include "utils/properties.h"
 
diff --git a/drm/DrmDevice.h b/drm/DrmDevice.h
index c08c766..4cbbd60 100644
--- a/drm/DrmDevice.h
+++ b/drm/DrmDevice.h
@@ -26,7 +26,6 @@
 #include "DrmCrtc.h"
 #include "DrmEncoder.h"
 #include "DrmFbImporter.h"
-#include "DrmPlane.h"
 #include "utils/UniqueFd.h"
 
 namespace android {
diff --git a/drm/DrmPlane.h b/drm/DrmPlane.h
index 34bba56..7fab2ba 100644
--- a/drm/DrmPlane.h
+++ b/drm/DrmPlane.h
@@ -29,6 +29,7 @@
 namespace android {
 
 class DrmDevice;
+struct DrmHwcLayer;
 
 class DrmPlane {
  public:
diff --git a/drm/ResourceManager.cpp b/drm/ResourceManager.cpp
index 8baa4cb..2cd393f 100644
--- a/drm/ResourceManager.cpp
+++ b/drm/ResourceManager.cpp
@@ -24,6 +24,8 @@
 #include <sstream>
 
 #include "bufferinfo/BufferInfoGetter.h"
+#include "drm/DrmDevice.h"
+#include "drm/DrmPlane.h"
 #include "utils/log.h"
 #include "utils/properties.h"
 
@@ -32,6 +34,10 @@
 ResourceManager::ResourceManager() : num_displays_(0) {
 }
 
+ResourceManager::~ResourceManager() {
+  uevent_listener_.Exit();
+}
+
 int ResourceManager::Init() {
   char path_pattern[PROPERTY_VALUE_MAX];
   // Could be a valid path or it can have at the end of it the wildcard %
diff --git a/drm/ResourceManager.h b/drm/ResourceManager.h
index 5ffe92c..bb91882 100644
--- a/drm/ResourceManager.h
+++ b/drm/ResourceManager.h
@@ -20,8 +20,8 @@
 #include <string.h>
 
 #include "DrmDevice.h"
-#include "UEventListener.h"
 #include "DrmFbImporter.h"
+#include "UEventListener.h"
 
 namespace android {
 
@@ -30,9 +30,7 @@
   ResourceManager();
   ResourceManager(const ResourceManager &) = delete;
   ResourceManager &operator=(const ResourceManager &) = delete;
-  ~ResourceManager() {
-    uevent_listener_.Exit();
-  }
+  ~ResourceManager();
 
   int Init();
   DrmDevice *GetDrmDevice(int display);
diff --git a/drm/UEventListener.h b/drm/UEventListener.h
index 048eb40..0724443 100644
--- a/drm/UEventListener.h
+++ b/drm/UEventListener.h
@@ -27,16 +27,16 @@
 class UEventListener : public Worker {
  public:
   UEventListener();
-  virtual ~UEventListener() = default;
+  ~UEventListener() override = default;
 
   int Init();
 
   void RegisterHotplugHandler(std::function<void()> hotplug_handler) {
-    hotplug_handler_ = hotplug_handler;
+    hotplug_handler_ = std::move(hotplug_handler);
   }
 
  protected:
-  virtual void Routine();
+  void Routine() override;
 
  private:
   UniqueFd uevent_fd_;
diff --git a/utils/properties.h b/utils/properties.h
index c8ddbae..0b49c61 100644
--- a/utils/properties.h
+++ b/utils/properties.h
@@ -17,6 +17,7 @@
 // NOLINTNEXTLINE(readability-identifier-naming)
 auto inline property_get(const char *name, char *value,
                          const char *default_value) -> int {
+  // NOLINTNEXTLINE (concurrency-mt-unsafe)
   char *prop = std::getenv(name);
   snprintf(value, PROPERTY_VALUE_MAX, "%s",
            (prop == nullptr) ? default_value : prop);
