diff --git a/src/apps/lc-compliance/simple_capture.cpp b/src/apps/lc-compliance/helpers/capture.cpp
similarity index 81%
rename from src/apps/lc-compliance/simple_capture.cpp
rename to src/apps/lc-compliance/helpers/capture.cpp
index 545b444c2593..5aab973f0392 100644
--- a/src/apps/lc-compliance/simple_capture.cpp
+++ b/src/apps/lc-compliance/helpers/capture.cpp
@@ -5,24 +5,24 @@
  * simple_capture.cpp - Simple capture helper
  */
 
-#include <gtest/gtest.h>
+#include "capture.h"
 
-#include "simple_capture.h"
+#include <gtest/gtest.h>
 
 using namespace libcamera;
 
-SimpleCapture::SimpleCapture(std::shared_ptr<Camera> camera)
+Capture::Capture(std::shared_ptr<Camera> camera)
 	: loop_(nullptr), camera_(camera),
 	  allocator_(std::make_unique<FrameBufferAllocator>(camera))
 {
 }
 
-SimpleCapture::~SimpleCapture()
+Capture::~Capture()
 {
 	stop();
 }
 
-void SimpleCapture::configure(StreamRole role)
+void Capture::configure(StreamRole role)
 {
 	config_ = camera_->generateConfiguration({ role });
 
@@ -42,7 +42,7 @@ void SimpleCapture::configure(StreamRole role)
 	}
 }
 
-void SimpleCapture::start()
+void Capture::start()
 {
 	Stream *stream = config_->at(0).stream();
 	int count = allocator_->allocate(stream);
@@ -50,12 +50,12 @@ void SimpleCapture::start()
 	ASSERT_GE(count, 0) << "Failed to allocate buffers";
 	EXPECT_EQ(count, config_->at(0).bufferCount) << "Allocated less buffers than expected";
 
-	camera_->requestCompleted.connect(this, &SimpleCapture::requestComplete);
+	camera_->requestCompleted.connect(this, &Capture::requestComplete);
 
 	ASSERT_EQ(camera_->start(), 0) << "Failed to start camera";
 }
 
-void SimpleCapture::stop()
+void Capture::stop()
 {
 	if (!config_ || !allocator_->allocated())
 		return;
@@ -69,14 +69,14 @@ void SimpleCapture::stop()
 	allocator_->free(stream);
 }
 
-/* SimpleCaptureBalanced */
+/* CaptureBalanced */
 
-SimpleCaptureBalanced::SimpleCaptureBalanced(std::shared_ptr<Camera> camera)
-	: SimpleCapture(camera)
+CaptureBalanced::CaptureBalanced(std::shared_ptr<Camera> camera)
+	: Capture(camera)
 {
 }
 
-void SimpleCaptureBalanced::capture(unsigned int numRequests)
+void CaptureBalanced::capture(unsigned int numRequests)
 {
 	start();
 
@@ -116,7 +116,7 @@ void SimpleCaptureBalanced::capture(unsigned int numRequests)
 	ASSERT_EQ(captureCount_, captureLimit_);
 }
 
-int SimpleCaptureBalanced::queueRequest(Request *request)
+int CaptureBalanced::queueRequest(Request *request)
 {
 	queueCount_++;
 	if (queueCount_ > captureLimit_)
@@ -125,7 +125,7 @@ int SimpleCaptureBalanced::queueRequest(Request *request)
 	return camera_->queueRequest(request);
 }
 
-void SimpleCaptureBalanced::requestComplete(Request *request)
+void CaptureBalanced::requestComplete(Request *request)
 {
 	EXPECT_EQ(request->status(), Request::Status::RequestComplete)
 		<< "Request didn't complete successfully";
@@ -141,14 +141,14 @@ void SimpleCaptureBalanced::requestComplete(Request *request)
 		loop_->exit(-EINVAL);
 }
 
-/* SimpleCaptureUnbalanced */
+/* CaptureUnbalanced */
 
-SimpleCaptureUnbalanced::SimpleCaptureUnbalanced(std::shared_ptr<Camera> camera)
-	: SimpleCapture(camera)
+CaptureUnbalanced::CaptureUnbalanced(std::shared_ptr<Camera> camera)
+	: Capture(camera)
 {
 }
 
-void SimpleCaptureUnbalanced::capture(unsigned int numRequests)
+void CaptureUnbalanced::capture(unsigned int numRequests)
 {
 	start();
 
@@ -179,7 +179,7 @@ void SimpleCaptureUnbalanced::capture(unsigned int numRequests)
 	ASSERT_EQ(status, 0);
 }
 
-void SimpleCaptureUnbalanced::requestComplete(Request *request)
+void CaptureUnbalanced::requestComplete(Request *request)
 {
 	captureCount_++;
 	if (captureCount_ >= captureLimit_) {
diff --git a/src/apps/lc-compliance/simple_capture.h b/src/apps/lc-compliance/helpers/capture.h
similarity index 76%
rename from src/apps/lc-compliance/simple_capture.h
rename to src/apps/lc-compliance/helpers/capture.h
index 2911d6019923..0574ab1c7ac7 100644
--- a/src/apps/lc-compliance/simple_capture.h
+++ b/src/apps/lc-compliance/helpers/capture.h
@@ -13,14 +13,14 @@
 
 #include "../common/event_loop.h"
 
-class SimpleCapture
+class Capture
 {
 public:
 	void configure(libcamera::StreamRole role);
 
 protected:
-	SimpleCapture(std::shared_ptr<libcamera::Camera> camera);
-	virtual ~SimpleCapture();
+	Capture(std::shared_ptr<libcamera::Camera> camera);
+	virtual ~Capture();
 
 	void start();
 	void stop();
@@ -35,10 +35,10 @@ protected:
 	std::vector<std::unique_ptr<libcamera::Request>> requests_;
 };
 
-class SimpleCaptureBalanced : public SimpleCapture
+class CaptureBalanced : public Capture
 {
 public:
-	SimpleCaptureBalanced(std::shared_ptr<libcamera::Camera> camera);
+	CaptureBalanced(std::shared_ptr<libcamera::Camera> camera);
 
 	void capture(unsigned int numRequests);
 
@@ -51,10 +51,10 @@ private:
 	unsigned int captureLimit_;
 };
 
-class SimpleCaptureUnbalanced : public SimpleCapture
+class CaptureUnbalanced : public Capture
 {
 public:
-	SimpleCaptureUnbalanced(std::shared_ptr<libcamera::Camera> camera);
+	CaptureUnbalanced(std::shared_ptr<libcamera::Camera> camera);
 
 	void capture(unsigned int numRequests);
 
diff --git a/src/apps/lc-compliance/meson.build b/src/apps/lc-compliance/meson.build
index 2f07a50f171b..ae8c6f4db51b 100644
--- a/src/apps/lc-compliance/meson.build
+++ b/src/apps/lc-compliance/meson.build
@@ -11,10 +11,15 @@ endif
 lc_compliance_enabled = true
 
 lc_compliance_sources = files([
-    'capture_test.cpp',
     'environment.cpp',
+    'helpers/capture.cpp',
     'main.cpp',
-    'simple_capture.cpp',
+    'tests/capture_test.cpp',
+])
+
+lc_compliance_includes = ([
+    include_directories('.'),
+    include_directories('helpers/')
 ])
 
 lc_compliance  = executable('lc-compliance', lc_compliance_sources,
@@ -26,5 +31,6 @@ lc_compliance  = executable('lc-compliance', lc_compliance_sources,
                                 libevent,
                                 libgtest,
                             ],
+                            include_directories : lc_compliance_includes,
                             install : true,
                             install_tag : 'bin-devel')
diff --git a/src/apps/lc-compliance/capture_test.cpp b/src/apps/lc-compliance/tests/capture_test.cpp
similarity index 95%
rename from src/apps/lc-compliance/capture_test.cpp
rename to src/apps/lc-compliance/tests/capture_test.cpp
index 1dcfcf92fc8c..284d36307619 100644
--- a/src/apps/lc-compliance/capture_test.cpp
+++ b/src/apps/lc-compliance/tests/capture_test.cpp
@@ -6,12 +6,13 @@
  * capture_test.cpp - Test camera capture
  */
 
+#include "capture.h"
+
 #include <iostream>
 
 #include <gtest/gtest.h>
 
 #include "environment.h"
-#include "simple_capture.h"
 
 using namespace libcamera;
 
@@ -83,7 +84,7 @@ TEST_P(SingleStream, Capture)
 {
 	auto [role, numRequests] = GetParam();
 
-	SimpleCaptureBalanced capture(camera_);
+	CaptureBalanced capture(camera_);
 
 	capture.configure(role);
 
@@ -102,7 +103,7 @@ TEST_P(SingleStream, CaptureStartStop)
 	auto [role, numRequests] = GetParam();
 	unsigned int numRepeats = 3;
 
-	SimpleCaptureBalanced capture(camera_);
+	CaptureBalanced capture(camera_);
 
 	capture.configure(role);
 
@@ -121,7 +122,7 @@ TEST_P(SingleStream, UnbalancedStop)
 {
 	auto [role, numRequests] = GetParam();
 
-	SimpleCaptureUnbalanced capture(camera_);
+	CaptureUnbalanced capture(camera_);
 
 	capture.configure(role);
 
