diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f183f6fd2b..c2b890f366 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -23,7 +23,7 @@ jobs:
         run: |
           bash scripts/check-clang.sh
   mac-os-build-clang:
-    runs-on: macos-11
+    runs-on: macos-12
     env:
       CC: /usr/bin/clang
       CXX: /usr/bin/clang++
@@ -49,7 +49,7 @@ jobs:
           cd build
           ./tst/webrtc_client_test
   mac-os-build-gcc:
-    runs-on: macos-11
+    runs-on: macos-12
     env:
       CC: gcc
       CXX: g++
@@ -104,7 +104,7 @@ jobs:
           cd build
           ./tst/webrtc_client_test
   static-build-mac:
-    runs-on: macos-11
+    runs-on: macos-12
     env:
       AWS_KVS_LOG_LEVEL: 2
     permissions:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 92e432bc0a..38d2f984dd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -455,7 +455,14 @@ if(COMPILER_WARNINGS)
   target_compile_options(kvsWebrtcSignalingClient PUBLIC -Wall -Werror -pedantic -Wextra -Wno-unknown-warning-option)
 endif()
 
-install(TARGETS kvsWebrtcClient kvsWebrtcSignalingClient kvsWebRtcThreadpool
+if(ENABLE_KVS_THREADPOOL)
+  install(TARGETS kvsWebRtcThreadpool
+          LIBRARY DESTINATION lib
+          ARCHIVE DESTINATION lib
+  )
+endif()
+
+install(TARGETS kvsWebrtcClient kvsWebrtcSignalingClient
   LIBRARY DESTINATION lib
   ARCHIVE DESTINATION lib
 )
diff --git a/src/source/Ice/TurnConnection.c b/src/source/Ice/TurnConnection.c
index 7761b757a9..a939ee6530 100644
--- a/src/source/Ice/TurnConnection.c
+++ b/src/source/Ice/TurnConnection.c
@@ -1033,6 +1033,7 @@ STATUS checkTurnPeerConnections(PTurnConnection pTurnConnection)
     PStunAttributeChannelNumber pStunAttributeChannelNumber = NULL;
     UINT32 i = 0;
 
+    UNUSED_PARAM(sendStatus);
     // turn mutex is assumed to be locked.
     CHK(pTurnConnection != NULL, STATUS_NULL_ARG);
     for (i = 0; i < pTurnConnection->turnPeerCount; ++i) {
diff --git a/src/source/PeerConnection/Rtcp.c b/src/source/PeerConnection/Rtcp.c
index 4702561784..b4dde063cf 100644
--- a/src/source/PeerConnection/Rtcp.c
+++ b/src/source/PeerConnection/Rtcp.c
@@ -87,6 +87,15 @@ static STATUS onRtcpReceiverReport(PRtcpPacket pRtcpPacket, PKvsPeerConnection p
     UINT32 rttPropDelayMsec = 0, rttPropDelay, delaySinceLastSR, lastSR, interarrivalJitter, extHiSeqNumReceived, cumulativeLost, senderSSRC, ssrc1;
     UINT64 currentTimeNTP = convertTimestampToNTP(GETTIME());
 
+    UNUSED_PARAM(rttPropDelayMsec);
+    UNUSED_PARAM(rttPropDelay);
+    UNUSED_PARAM(delaySinceLastSR);
+    UNUSED_PARAM(lastSR);
+    UNUSED_PARAM(interarrivalJitter);
+    UNUSED_PARAM(extHiSeqNumReceived);
+    UNUSED_PARAM(cumulativeLost);
+    UNUSED_PARAM(senderSSRC);
+
     CHK(pKvsPeerConnection != NULL && pRtcpPacket != NULL, STATUS_NULL_ARG);
     // https://tools.ietf.org/html/rfc3550#section-6.4.2
     if (pRtcpPacket->payloadLength != RTCP_PACKET_RECEIVER_REPORT_MINLEN) {
diff --git a/src/source/Sctp/Sctp.c b/src/source/Sctp/Sctp.c
index 2af922e0cd..1043987276 100644
--- a/src/source/Sctp/Sctp.c
+++ b/src/source/Sctp/Sctp.c
@@ -366,5 +366,9 @@ INT32 onSctpInboundPacket(struct socket* sock, union sctp_sockstore addr, PVOID
         free(data);
     }
 
+    if (STATUS_FAILED(retStatus)) {
+        return -1;
+    }
+
     return 1;
 }
diff --git a/src/source/Signaling/LwsApiCalls.c b/src/source/Signaling/LwsApiCalls.c
index b696157da7..0132245a95 100644
--- a/src/source/Signaling/LwsApiCalls.c
+++ b/src/source/Signaling/LwsApiCalls.c
@@ -37,6 +37,7 @@ INT32 lwsHttpCallbackRoutine(struct lws* wsi, enum lws_callback_reasons reason,
     PStateMachineState pStateMachineState;
     BOOL skewMapContains = FALSE;
 
+    UNUSED_PARAM(logLevel);
     DLOGV("HTTPS callback with reason %d", reason);
 
     // Early check before accessing the custom data field to see if we are interested in processing the message
@@ -1493,6 +1494,9 @@ STATUS joinStorageSessionLws(PSignalingClient pSignalingClient, UINT64 time)
     PCHAR pResponseStr;
     UINT32 resultLen;
 
+    UNUSED_PARAM(pResponseStr);
+    UNUSED_PARAM(resultLen);
+
     CHK(pSignalingClient != NULL, STATUS_NULL_ARG);
     CHK(pSignalingClient->channelEndpointWebrtc[0] != '\0', STATUS_INTERNAL_ERROR);
 
diff --git a/src/source/Stun/Stun.c b/src/source/Stun/Stun.c
index 4e52b6c03a..ea1c30f1ef 100644
--- a/src/source/Stun/Stun.c
+++ b/src/source/Stun/Stun.c
@@ -379,6 +379,7 @@ STATUS deserializeStunPacket(PBYTE pStunBuffer, UINT32 bufferSize, PBYTE passwor
     UINT8 *pErrorPhrase, *pBuffer = NULL;
     UINT16 errorPhraseLength, channelNumber, buffereLength, errorCode;
 
+    UNUSED_PARAM(pStunAttributeFingerprint);
     CHK(pStunBuffer != NULL && ppStunPacket != NULL, STATUS_NULL_ARG);
     CHK(bufferSize >= STUN_HEADER_LEN, STATUS_INVALID_ARG);
 
diff --git a/tst/JitterBufferFunctionalityTest.cpp b/tst/JitterBufferFunctionalityTest.cpp
index 53f4e0ee48..927403541c 100644
--- a/tst/JitterBufferFunctionalityTest.cpp
+++ b/tst/JitterBufferFunctionalityTest.cpp
@@ -1146,11 +1146,9 @@ TEST_F(JitterBufferFunctionalityTest, timestampOverflowTest)
     UINT32 pktCount = 7;
     UINT32 startingSequenceNumber = 0;
     UINT32 missingSequenceNumber = 0;
-    UINT32 firstSequenceNumber = 0;
     initializeJitterBuffer(4, 0, pktCount);
     srand(time(0));
     startingSequenceNumber = rand()%UINT16_MAX;
-    firstSequenceNumber = startingSequenceNumber - 1;
 
     // First frame "1"
     mPRtpPackets[0]->payloadLength = 1;