diff --git a/CMakeLists.txt b/CMakeLists.txt
index f3ab6d9..7885494 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,6 +26,7 @@
 option(MARL_BUILD_TESTS "Build tests" OFF)
 option(MARL_ASAN "Build marl with address sanitizer" OFF)
 option(MARL_TSAN "Build marl with thread sanitizer" OFF)
+option(MARL_INSTALL "Create marl install target" OFF)
 
 if(MARL_ASAN AND MARL_TSAN)
     message(FATAL_ERROR "MARL_ASAN and MARL_TSAN are mutually exclusive")
@@ -53,7 +54,7 @@
 ###########################################################
 # File lists
 ###########################################################
-file(GLOB MARL_LIST
+set(MARL_LIST
     ${MARL_SRC_DIR}/debug.cpp
     ${MARL_SRC_DIR}/scheduler.cpp
     ${MARL_SRC_DIR}/thread.cpp
@@ -74,20 +75,6 @@
     )
 endif(NOT MSVC)
 
-file(GLOB MARL_TEST_LIST
-    ${MARL_SRC_DIR}/blockingcall_test.cpp
-    ${MARL_SRC_DIR}/conditionvariable_test.cpp
-    ${MARL_SRC_DIR}/containers_test.cpp
-    ${MARL_SRC_DIR}/defer_test.cpp
-    ${MARL_SRC_DIR}/marl_test.cpp
-    ${MARL_SRC_DIR}/marl_test.h
-    ${MARL_SRC_DIR}/osfiber_test.cpp
-    ${MARL_SRC_DIR}/pool_test.cpp
-    ${MARL_SRC_DIR}/scheduler_test.cpp
-    ${MARL_SRC_DIR}/ticket_test.cpp
-    ${MARL_SRC_DIR}/waitgroup_test.cpp
-)
-
 ###########################################################
 # OS libraries
 ###########################################################
@@ -148,10 +135,44 @@
 
 target_link_libraries(marl "${MARL_OS_LIBS}")
 
+# install
+if(MARL_INSTALL)
+    include(GNUInstallDirs)
+
+    install(DIRECTORY ${MARL_INCLUDE_DIR}/marl
+        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+        USE_SOURCE_PERMISSIONS
+    )
+
+    install(TARGETS marl
+        EXPORT marl-targets
+        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+        INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    )
+
+    install(EXPORT marl-targets
+        FILE marl-config.cmake
+        NAMESPACE marl::
+        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/marl
+    )
+endif(MARL_INSTALL)
+
 # tests
 if(MARL_BUILD_TESTS)
-    file(GLOB MARL_TEST_LIST
-        ${MARL_SRC_DIR}/*_test.cpp
+    set(MARL_TEST_LIST
+        ${MARL_SRC_DIR}/blockingcall_test.cpp
+        ${MARL_SRC_DIR}/conditionvariable_test.cpp
+        ${MARL_SRC_DIR}/containers_test.cpp
+        ${MARL_SRC_DIR}/defer_test.cpp
+        ${MARL_SRC_DIR}/marl_test.cpp
+        ${MARL_SRC_DIR}/marl_test.h
+        ${MARL_SRC_DIR}/osfiber_test.cpp
+        ${MARL_SRC_DIR}/pool_test.cpp
+        ${MARL_SRC_DIR}/scheduler_test.cpp
+        ${MARL_SRC_DIR}/ticket_test.cpp
+        ${MARL_SRC_DIR}/waitgroup_test.cpp
         ${GOOGLETEST_DIR}/googletest/src/gtest-all.cc
     )
 
diff --git a/README.md b/README.md
index 3641f79..7c3ed94 100644
--- a/README.md
+++ b/README.md
@@ -45,7 +45,7 @@
 
 ### Windows
 
-Marl can be build using [Visual Studio 2019's CMake integration](https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=vs-2019).
+Marl can be built using [Visual Studio 2019's CMake integration](https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=vs-2019).
 
 ### Using Marl in your CMake project
 
diff --git a/examples/fractal.cpp b/examples/fractal.cpp
index bf74f27..0993341 100644
--- a/examples/fractal.cpp
+++ b/examples/fractal.cpp
@@ -175,17 +175,20 @@
       for (uint32_t x = 0; x < imageWidth; x++) {
         // Calculate the fractal pixel color.
         Color<float> color = {};
+        // Take a number of sub-pixel samples.
         for (int sy = 0; sy < samplesPerPixelH; sy++) {
           auto fy = float(y) + (sy / float(samplesPerPixelH));
+          auto dy = float(fy) / float(imageHeight);
           for (int sx = 0; sx < samplesPerPixelW; sx++) {
             auto fx = float(x) + (sx / float(samplesPerPixelW));
             auto dx = float(fx) / float(imageWidth);
-            auto dy = float(fy) / float(imageHeight);
             color += julia(lerp(dx, windowMinX, windowMaxX),
                            lerp(dy, windowMinY, windowMaxY), cx, cy);
           }
         }
+        // Average the color.
         color /= samplesPerPixelW * samplesPerPixelH;
+        // Write the pixel out to the image buffer.
         pixels[x + y * imageWidth] = {static_cast<uint8_t>(color.r * 255),
                                       static_cast<uint8_t>(color.g * 255),
                                       static_cast<uint8_t>(color.b * 255)};
diff --git a/examples/primes.cpp b/examples/primes.cpp
index 9f77631..a6dea8ef 100644
--- a/examples/primes.cpp
+++ b/examples/primes.cpp
@@ -20,6 +20,8 @@
 #include "marl/thread.h"
 #include "marl/ticket.h"
 
+#include <math.h>
+
 // searchMax defines the upper limit on primes to find.
 constexpr int searchMax = 10000000;
 
diff --git a/include/marl/debug.h b/include/marl/debug.h
index 4eea139..ce4612a 100644
--- a/include/marl/debug.h
+++ b/include/marl/debug.h
@@ -26,6 +26,7 @@
 namespace marl {
 
 void fatal(const char* msg, ...);
+void warn(const char* msg, ...);
 void assert_has_bound_scheduler(const char* feature);
 
 #if MARL_DEBUG_ENABLED
@@ -39,11 +40,13 @@
 #define MARL_ASSERT_HAS_BOUND_SCHEDULER(feature) \
   assert_has_bound_scheduler(feature);
 #define MARL_UNREACHABLE() MARL_FATAL("UNREACHABLE");
+#define MARL_WARN(msg, ...) marl::warn("WARNING: " msg "\n", ##__VA_ARGS__);
 #else
 #define MARL_FATAL(msg, ...)
 #define MARL_ASSERT(cond, msg, ...)
 #define MARL_ASSERT_HAS_BOUND_SCHEDULER(feature)
 #define MARL_UNREACHABLE()
+#define MARL_WARN(msg, ...)
 #endif
 
 }  // namespace marl
diff --git a/include/marl/pool.h b/include/marl/pool.h
index 7fd50fe..69beaef 100644
--- a/include/marl/pool.h
+++ b/include/marl/pool.h
@@ -161,7 +161,7 @@
 }
 
 template <typename T>
-typename Pool<T>::Loan& Pool<T>::Loan::operator=(const Pool<T>::Loan& rhs) {
+typename Pool<T>::Loan& Pool<T>::Loan::operator=(const Loan& rhs) {
   reset();
   if (rhs.item != nullptr) {
     item = rhs.item;
@@ -172,7 +172,7 @@
 }
 
 template <typename T>
-typename Pool<T>::Loan& Pool<T>::Loan::operator=(Pool<T>::Loan&& rhs) {
+typename Pool<T>::Loan& Pool<T>::Loan::operator=(Loan&& rhs) {
   reset();
   std::swap(item, rhs.item);
   std::swap(storage, rhs.storage);
diff --git a/include/marl/scheduler.h b/include/marl/scheduler.h
index bb1b0af..7a04f49 100644
--- a/include/marl/scheduler.h
+++ b/include/marl/scheduler.h
@@ -137,7 +137,7 @@
   static constexpr size_t FiberStackSize = 1024 * 1024;
 
   // Maximum number of worker threads.
-  static constexpr size_t MaxWorkerThreads = 64;
+  static constexpr size_t MaxWorkerThreads = 256;
 
   // TODO: Implement a queue that recycles elements to reduce number of
   // heap allocations.
diff --git a/src/debug.cpp b/src/debug.cpp
index 4b9964a..8c8b7e4 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -32,6 +32,13 @@
   abort();
 }
 
+void warn(const char* msg, ...) {
+  va_list vararg;
+  va_start(vararg, msg);
+  vfprintf(stdout, msg, vararg);
+  va_end(vararg);
+}
+
 void assert_has_bound_scheduler(const char* feature) {
   MARL_ASSERT(Scheduler::get() != nullptr,
               "%s requires a marl::Scheduler to be bound", feature);
diff --git a/src/scheduler.cpp b/src/scheduler.cpp
index 18723d0..09771ac 100644
--- a/src/scheduler.cpp
+++ b/src/scheduler.cpp
@@ -122,6 +122,14 @@
 
 void Scheduler::setWorkerThreadCount(int newCount) {
   MARL_ASSERT(newCount >= 0, "count must be positive");
+  if (newCount > int(MaxWorkerThreads)) {
+    MARL_WARN(
+        "marl::Scheduler::setWorkerThreadCount() called with a count of %d, "
+        "which exceeds the maximum of %d. Limiting the number of threads to "
+        "%d.",
+        newCount, int(MaxWorkerThreads), int(MaxWorkerThreads));
+    newCount = MaxWorkerThreads;
+  }
   auto oldCount = numWorkerThreads;
   for (int idx = oldCount - 1; idx >= newCount; idx--) {
     workerThreads[idx]->stop();
@@ -476,7 +484,7 @@
 }
 
 Scheduler::Fiber* Scheduler::Worker::createWorkerFiber() {
-  auto id = static_cast<int32_t>(workerFibers.size() + 1);
+  auto id = static_cast<uint32_t>(workerFibers.size() + 1);
   auto fiber = Fiber::create(id, FiberStackSize, [&] { run(); });
   workerFibers.push_back(std::unique_ptr<Fiber>(fiber));
   return fiber;
