diff --git a/source/Lib/CommonLib/Picture.cpp b/source/Lib/CommonLib/Picture.cpp
index 73d3e108ad13f618e51398a21b628945bba69c67..1519393a85af7f64eef0cb94b70ac9a64b132715 100644
--- a/source/Lib/CommonLib/Picture.cpp
+++ b/source/Lib/CommonLib/Picture.cpp
@@ -887,9 +887,9 @@ const CPelUnitBuf Picture::getRecoBuf(const UnitArea &unit, bool wrap)     const
 const CPelUnitBuf Picture::getRecoBuf(bool wrap)                           const { return M_BUFS(scheduler.getSplitPicId(), wrap ? PIC_RECON_WRAP : PIC_RECONSTRUCTION); }
 
 #if JVET_O0299_APS_SCALINGLIST
-void Picture::finalInit( const SPS& sps, const PPS& pps, APS** alfApss, APS& lmcsAps, APS& scalingListAps )
+void Picture::finalInit( const SPS& sps, const PPS& pps, APS** alfApss, APS* lmcsAps, APS* scalingListAps )
 #else
-void Picture::finalInit(const SPS& sps, const PPS& pps, APS** alfApss, APS& lmcsAps)
+void Picture::finalInit(const SPS& sps, const PPS& pps, APS** alfApss, APS* lmcsAps)
 #endif
 {
   for( auto &sei : SEIs )
@@ -930,9 +930,9 @@ void Picture::finalInit(const SPS& sps, const PPS& pps, APS** alfApss, APS& lmcs
   cs->slice   = nullptr;  // the slices for this picture have not been set at this point. update cs->slice after swapSliceObject()
   cs->pps     = &pps;
   memcpy(cs->alfApss, alfApss, sizeof(cs->alfApss));
-  cs->lmcsAps = &lmcsAps;
+  cs->lmcsAps = lmcsAps;
 #if JVET_O0299_APS_SCALINGLIST  
-  cs->scalinglistAps = &scalingListAps;
+  cs->scalinglistAps = scalingListAps;
 #endif
 
   cs->pcv     = pps.pcv;
diff --git a/source/Lib/CommonLib/Picture.h b/source/Lib/CommonLib/Picture.h
index f8e62a92c0e57b15a22b68acc3fc5b7126213f17..85ccb3d4720799f5ecfb100582719ce3634c7484 100644
--- a/source/Lib/CommonLib/Picture.h
+++ b/source/Lib/CommonLib/Picture.h
@@ -238,9 +238,9 @@ struct Picture : public UnitArea
 
   void extendPicBorder();
 #if JVET_O0299_APS_SCALINGLIST
-  void finalInit( const SPS& sps, const PPS& pps, APS** alfApss, APS& lmcsAps, APS& scalingListAps );
+  void finalInit( const SPS& sps, const PPS& pps, APS** alfApss, APS* lmcsAps, APS* scalingListAps );
 #else
-  void finalInit(const SPS& sps, const PPS& pps, APS** alfApss, APS& lmcsAps);
+  void finalInit(const SPS& sps, const PPS& pps, APS** alfApss, APS* lmcsAps);
 #endif
 
   int  getPOC()                               const { return poc; }
diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp
index 19d624d032b8031a57209916e031fd33afa39355..8e0e419ee40a16706b9b39b5462ca749177a7af2 100644
--- a/source/Lib/CommonLib/Slice.cpp
+++ b/source/Lib/CommonLib/Slice.cpp
@@ -2339,9 +2339,9 @@ uint32_t PreCalcValues::getMinQtSize( const Slice &slice, const ChannelType chTy
 
 #if JVET_O1164_RPR
 #if JVET_O0299_APS_SCALINGLIST
-void Slice::scaleRefPicList( Picture *scaledRefPic[ ], APS** apss, APS& lmcsAps, APS& scalingListAps, const bool isDecoder )
+void Slice::scaleRefPicList( Picture *scaledRefPic[ ], APS** apss, APS* lmcsAps, APS* scalingListAps, const bool isDecoder )
 #else
-void Slice::scaleRefPicList( Picture *scaledRefPic[], APS** apss, APS& lmcsAps, const bool isDecoder )
+void Slice::scaleRefPicList( Picture *scaledRefPic[], APS** apss, APS* lmcsAps, const bool isDecoder )
 #endif
 {
   int i;
diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h
index d517b36999e24b13f9b41ac55c5efb6739401298..7e3887cb31c77144deebdf0eab1685fcb8f1067e 100644
--- a/source/Lib/CommonLib/Slice.h
+++ b/source/Lib/CommonLib/Slice.h
@@ -2096,7 +2096,7 @@ public:
   bool                        getDisableSATDForRD() { return m_disableSATDForRd; }
 #if JVET_O1164_RPR
 #if JVET_O0299_APS_SCALINGLIST
-  void                        scaleRefPicList( Picture *scaledRefPic[ ], APS** apss, APS& lmcsAps, APS& scalingListAps, const bool isDecoder );
+  void                        scaleRefPicList( Picture *scaledRefPic[ ], APS** apss, APS* lmcsAps, APS* scalingListAps, const bool isDecoder );
 #else
   void                        scaleRefPicList( Picture *scaledRefPic[], APS** apss, APS& lmcsAps, const bool isDecoder );
 #endif
diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp
index 7df346d70087e8b668049964ceee9bac3ceab191..e89947f4d84735e5ad999890bc85e3706bc2fc0c 100644
--- a/source/Lib/DecoderLib/DecLib.cpp
+++ b/source/Lib/DecoderLib/DecLib.cpp
@@ -877,9 +877,9 @@ void DecLib::xActivateParameterSets()
 
     m_apcSlicePilot->applyReferencePictureListBasedMarking(m_cListPic, m_apcSlicePilot->getRPL0(), m_apcSlicePilot->getRPL1());
 #if JVET_O0299_APS_SCALINGLIST
-    m_pcPic->finalInit( *sps, *pps, apss, *lmcsAPS, *scalinglistAPS );
+    m_pcPic->finalInit( *sps, *pps, apss, lmcsAPS, scalinglistAPS );
 #else
-    m_pcPic->finalInit(*sps, *pps, apss, *lmcsAPS);
+    m_pcPic->finalInit(*sps, *pps, apss, lmcsAPS);
 #endif
     m_parameterSetManager.getPPS(m_apcSlicePilot->getPPSId())->setNumBricksInPic((int)m_pcPic->brickMap->bricks.size());
     m_pcPic->createTempBuffers( m_pcPic->cs->pps->pcv->maxCUWidth );
@@ -1375,9 +1375,9 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl
 
 #if JVET_O1164_RPR
 #if JVET_O0299_APS_SCALINGLIST
-  pcSlice->scaleRefPicList( scaledRefPic, m_parameterSetManager.getAPSs(), *pcSlice->getLmcsAPS(), *pcSlice->getscalingListAPS(), true );
+  pcSlice->scaleRefPicList( scaledRefPic, m_parameterSetManager.getAPSs(), pcSlice->getLmcsAPS(), pcSlice->getscalingListAPS(), true );
 #else
-  pcSlice->scaleRefPicList( scaledRefPic, m_parameterSetManager.getAPSs(), *pcSlice->getLmcsAPS(), true );
+  pcSlice->scaleRefPicList( scaledRefPic, m_parameterSetManager.getAPSs(), pcSlice->getLmcsAPS(), true );
 #endif
 #endif
 
diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp
index 4a71c7412bc9bcc510f5f1c2853764485c82ae03..a5183461ba68b0b410e8a59b4c05c74169493feb 100644
--- a/source/Lib/EncoderLib/EncGOP.cpp
+++ b/source/Lib/EncoderLib/EncGOP.cpp
@@ -2124,9 +2124,9 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic,
     pcSlice->constructRefPicList(rcListPic);
 #if JVET_O1164_RPR
 #if JVET_O0299_APS_SCALINGLIST
-    pcSlice->scaleRefPicList( scaledRefPic, m_pcEncLib->getApss(), *pcSlice->getLmcsAPS(), *pcSlice->getscalingListAPS(), false );
+    pcSlice->scaleRefPicList( scaledRefPic, m_pcEncLib->getApss(), pcSlice->getLmcsAPS(), pcSlice->getscalingListAPS(), false );
 #else
-    pcSlice->scaleRefPicList( scaledRefPic, m_pcEncLib->getApss(), *pcSlice->getLmcsAPS(), false );
+    pcSlice->scaleRefPicList( scaledRefPic, m_pcEncLib->getApss(), pcSlice->getLmcsAPS(), false );
 #endif
 #endif
 
diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp
index 7463fcc1feb6aead3932407fa434bb5d0e18836d..025332cac9e28d9dcdd9179072164f8d51165273 100644
--- a/source/Lib/EncoderLib/EncLib.cpp
+++ b/source/Lib/EncoderLib/EncLib.cpp
@@ -484,9 +484,9 @@ void EncLib::init( bool isFieldCoding, AUWriterIf* auWriterIf )
 #endif
     picBg->getRecoBuf().fill(0);
 #if JVET_O0299_APS_SCALINGLIST
-    picBg->finalInit( sps0, pps0, m_apss, *m_lmcsAPS, *m_scalinglistAPS );
+    picBg->finalInit( sps0, pps0, m_apss, m_lmcsAPS, m_scalinglistAPS );
 #else
-    picBg->finalInit(sps0, pps0, m_apss, *m_lmcsAPS);
+    picBg->finalInit(sps0, pps0, m_apss, m_lmcsAPS);
 #endif
     pps0.setNumBricksInPic((int)picBg->brickMap->bricks.size());
     picBg->allocateNewSlice();
@@ -675,9 +675,9 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* cPicYuvTru
 
     picCurr->M_BUFS(0, PIC_ORIGINAL).copyFrom(m_cGOPEncoder.getPicBg()->getRecoBuf());
 #if JVET_O0299_APS_SCALINGLIST
-    picCurr->finalInit( *sps, *pps, m_apss, *m_lmcsAPS, *m_scalinglistAPS );
+    picCurr->finalInit( *sps, *pps, m_apss, m_lmcsAPS, m_scalinglistAPS );
 #else
-    picCurr->finalInit(*sps, *pps, m_apss, *m_lmcsAPS);
+    picCurr->finalInit(*sps, *pps, m_apss, m_lmcsAPS);
 #endif
     picCurr->poc = m_iPOCLast - 1;
     m_iPOCLast -= 2;
@@ -775,9 +775,9 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* cPicYuvTru
 #endif
 
 #if JVET_O0299_APS_SCALINGLIST
-      pcPicCurr->finalInit( *pSPS, *pPPS, m_apss, *m_lmcsAPS, *m_scalinglistAPS );
+      pcPicCurr->finalInit( *pSPS, *pPPS, m_apss, m_lmcsAPS, m_scalinglistAPS );
 #else
-      pcPicCurr->finalInit(*pSPS, *pPPS, m_apss, *m_lmcsAPS);
+      pcPicCurr->finalInit(*pSPS, *pPPS, m_apss, m_lmcsAPS);
 #endif
       PPS *ptrPPS = (ppsID<0) ? m_ppsMap.getFirstPS() : m_ppsMap.getPS(ppsID);
       ptrPPS->setNumBricksInPic((int)pcPicCurr->brickMap->bricks.size());
@@ -878,9 +878,9 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* pcPicYuvTr
         const PPS *pPPS=(ppsID<0) ? m_ppsMap.getFirstPS() : m_ppsMap.getPS(ppsID);
         const SPS *pSPS=m_spsMap.getPS(pPPS->getSPSId());
 #if JVET_O0299_APS_SCALINGLIST
-        pcField->finalInit( *pSPS, *pPPS, m_apss, *m_lmcsAPS, *m_scalinglistAPS );
+        pcField->finalInit( *pSPS, *pPPS, m_apss, m_lmcsAPS, m_scalinglistAPS );
 #else
-        pcField->finalInit(*pSPS, *pPPS, m_apss, *m_lmcsAPS);
+        pcField->finalInit(*pSPS, *pPPS, m_apss, m_lmcsAPS);
 #endif
       }