diff --git a/CMakeLists.txt b/CMakeLists.txt
index f1441f49c89b9b8ed4cb8c601783f99788820546..0f0b1e56ab31eb91e30f49c95463df46784496ce 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -162,7 +162,7 @@ if (WIN32) # TODO(nick) Should do based upon compiler (VS)
 	set(OS_LIBS "")
 else()
 	add_definitions(-DUNIX)
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -msse3")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -msse3 -Werror=return-type")
 	set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -pg -Wall")
 	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -mfpmath=sse")
 	set(OS_LIBS "dl")
diff --git a/applications/gui/src/camera.cpp b/applications/gui/src/camera.cpp
index 5e1413ddb660bea45dc6ab4f51f91bccbf78bc9d..10cb7053d6e18da0d37aefb3f44cbb4241e0f37d 100644
--- a/applications/gui/src/camera.cpp
+++ b/applications/gui/src/camera.cpp
@@ -240,7 +240,7 @@ void ftl::gui::Camera::setChannel(ftl::rgbd::channel_t c) {
 }
 
 const GLTexture &ftl::gui::Camera::thumbnail() {
-
+	return GLTexture();
 }
 
 const GLTexture &ftl::gui::Camera::captureFrame() {
@@ -309,5 +309,5 @@ const GLTexture &ftl::gui::Camera::captureFrame() {
 }
 
 nlohmann::json ftl::gui::Camera::getMetaData() {
-
+	return nlohmann::json();
 }
diff --git a/applications/gui/src/screen.cpp b/applications/gui/src/screen.cpp
index d6244156fbec1880e78aa386171d10be6d452b97..32b54c630df56678e5f30d72cef1608d107bb14a 100644
--- a/applications/gui/src/screen.cpp
+++ b/applications/gui/src/screen.cpp
@@ -271,6 +271,7 @@ bool ftl::gui::Screen::mouseMotionEvent(const Eigen::Vector2i &p, const Eigen::V
 	} else {
 		if (camera_) camera_->mouseMovement(rel[0], rel[1], button);
 	}
+	return true; // TODO: return statement was missing; is true correct?
 }
 
 bool ftl::gui::Screen::mouseButtonEvent(const nanogui::Vector2i &p, int button, bool down, int modifiers) {
diff --git a/applications/gui/src/thumbview.cpp b/applications/gui/src/thumbview.cpp
index 4b2d03a75f4c6be3ee1fc4da73e9bcdc11b2b6a2..2870985873ab2a87e921e4376fabf66f965348ce 100644
--- a/applications/gui/src/thumbview.cpp
+++ b/applications/gui/src/thumbview.cpp
@@ -19,6 +19,8 @@ bool ThumbView::mouseButtonEvent(const nanogui::Vector2i &p, int button, bool do
 	if (button == 0 && !down) {
 		screen_->setActiveCamera(cam_);
 	}
+
+	return false; // TODO: return statement was missing; is false correct?
 }
 
 void ThumbView::draw(NVGcontext *ctx) {
diff --git a/applications/registration/src/correspondances.cpp b/applications/registration/src/correspondances.cpp
index a05cddfa8bbf3931f1a9df1a3f236ea4ff28afe6..ce662756a7901be5b5b1a3662eeb082585b3839a 100644
--- a/applications/registration/src/correspondances.cpp
+++ b/applications/registration/src/correspondances.cpp
@@ -255,6 +255,8 @@ bool Correspondances::capture(cv::Mat &rgb1, cv::Mat &rgb2) {
 			}
 		}
 	}
+
+	return true; // TODO: return statement was missing; is true correct?
 }
 
 bool Correspondances::add(int tx, int ty, int sx, int sy) {