diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1bbff4bfc2ad06e66d886b6fb43c45be6622e41f..5c29d079537e390bb50b5b70dfd0e03a5daabc20 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
 
 IF(UNIX)
   # add some standard warnings
-  ADD_DEFINITIONS(-Wno-variadic-macros -Wno-long-long -Wall -Wextra -Winit-self -Woverloaded-virtual -Wsign-promo -Wsynth -Wno-unused-parameter -pedantic -Woverloaded-virtual -Wno-unknown-pragmas)
+  ADD_DEFINITIONS(-Wno-variadic-macros -Wno-long-long -Wall -Wextra -Winit-self -Woverloaded-virtual -Wsign-promo -Wno-unused-parameter -pedantic -Woverloaded-virtual -Wno-unknown-pragmas)
   
   # -ansi does not compile with sjn module
   #ADD_DEFINITIONS(-ansi)
diff --git a/package_bgs/WeightedMovingVarianceBGS.cpp b/package_bgs/WeightedMovingVarianceBGS.cpp
index 7e691e9e470ffa42236c4a6408f3d9703c904798..0317a3cfe24438995a6f9a538140539e401ce0e9 100644
--- a/package_bgs/WeightedMovingVarianceBGS.cpp
+++ b/package_bgs/WeightedMovingVarianceBGS.cpp
@@ -117,7 +117,7 @@ void WeightedMovingVarianceBGS::process(const cv::Mat &img_input, cv::Mat &img_o
 }
 
 //unused
-cv::Mat WeightedMovingVarianceBGS::computeWeightedMean(const std::vector<cv::Mat> &v_img_input_f, const std::vector<double> weights)
+cv::Mat WeightedMovingVarianceBGS::computeWeightedMean(const std::vector<cv::Mat> &v_img_input_f, const std::vector<double> &weights)
 {
   cv::Mat img;
   return img;
diff --git a/package_bgs/WeightedMovingVarianceBGS.h b/package_bgs/WeightedMovingVarianceBGS.h
index 10ff6537f9f416408ae908ac0c33ba5578a6cb00..88c2ec821399aea86f6895e4c23263c3bcb996bb 100644
--- a/package_bgs/WeightedMovingVarianceBGS.h
+++ b/package_bgs/WeightedMovingVarianceBGS.h
@@ -37,7 +37,7 @@ public:
   WeightedMovingVarianceBGS();
   ~WeightedMovingVarianceBGS();
 
-  cv::Mat computeWeightedMean(const std::vector<cv::Mat> &v_img_input_f, const std::vector<double> weights);
+  cv::Mat computeWeightedMean(const std::vector<cv::Mat> &v_img_input_f, const std::vector<double> &weights);
   cv::Mat computeWeightedVariance(const cv::Mat &img_input_f, const cv::Mat &img_mean_f, const double weight);
 
   void process(const cv::Mat &img_input, cv::Mat &img_output, cv::Mat &img_bgmodel);
diff --git a/package_bgs/av/TBackground.cpp b/package_bgs/av/TBackground.cpp
index d10fac059e4b27ba48486d57701b6307a562e263..d05bbd27db892c71b2e9788c25278813039763ae 100644
--- a/package_bgs/av/TBackground.cpp
+++ b/package_bgs/av/TBackground.cpp
@@ -71,13 +71,13 @@ int TBackground::Init(IplImage * pSource)
 bool TBackground::isInitOk(IplImage * pSource, IplImage *pBackground, IplImage *pMotionMask)
 {
   bool bResult = true;
-  int nbl, nbc;
 
   if(pSource == NULL || pSource->nChannels != 1 || pSource->depth != IPL_DEPTH_8U)
     bResult = false;
 
   if(bResult)
   {
+    int nbl, nbc;
     nbl = pSource->height;
     nbc = pSource->width;
     
@@ -111,7 +111,6 @@ int TBackground::UpdateTest(IplImage *pSource, IplImage *pBackground, IplImage *
   int nErr = 0;
   CvScalar Color;
   unsigned char *ptr;
-  int l, c;
 
   if(pTest == NULL || !isInitOk(pSource, pBackground, pSource))
     nErr = 1;
@@ -135,6 +134,7 @@ int TBackground::UpdateTest(IplImage *pSource, IplImage *pBackground, IplImage *
 
   if(!nErr)
   {
+    int l, c;
     // recupere l'indice de la colonne
     ptr = (unsigned char *)(pTest->imageData);
     c = *ptr;
diff --git a/package_bgs/jmo/BlobExtraction.cpp b/package_bgs/jmo/BlobExtraction.cpp
index c3d2bea679c147872f3acbd293e01bcef8c5f36a..81857eb671e7432dd16e7fc048f52cb648ca5e55 100644
--- a/package_bgs/jmo/BlobExtraction.cpp
+++ b/package_bgs/jmo/BlobExtraction.cpp
@@ -1291,10 +1291,10 @@ namespace Blob
           //if(RegionData[i]->parent == iOld) { RegionData[i]->parent = iNew; }
           if ((*iti)->parent == iOld) { (*iti)->parent = iNew; }
 
-          iti++;
+          ++iti;
         }
         iNew++;
-        itNew++;
+        ++itNew;
       }
     }
 
@@ -1361,7 +1361,7 @@ namespace Blob
     {
       delete *itBlobs;
       //RegionData.erase( itBlobs );
-      itBlobs++;
+      ++itBlobs;
     }
     RegionData.erase(RegionData.begin() + HighRegionNum + 1, RegionData.end());
 
diff --git a/package_bgs/jmo/BlobResult.cpp b/package_bgs/jmo/BlobResult.cpp
index 6211fbf5761474e1fa0e7fe563e9f77bdc0b8d7b..1a047c7dc9035e017eab230f1e49e401d25780cc 100644
--- a/package_bgs/jmo/BlobResult.cpp
+++ b/package_bgs/jmo/BlobResult.cpp
@@ -183,8 +183,8 @@ namespace Blob
       // vector de CBlob*. Per tant, creem un blob nou a partir del
       // blob original
       *pBlobsDst = new CBlob(**pBlobsSrc);
-      pBlobsSrc++;
-      pBlobsDst++;
+      ++pBlobsSrc;
+      ++pBlobsDst;
     }
   }
 
@@ -266,8 +266,8 @@ namespace Blob
         // vector de CBlob*. Per tant, creem un blob nou a partir del
         // blob original
         *pBlobsDst = new CBlob(**pBlobsSrc);
-        pBlobsSrc++;
-        pBlobsDst++;
+        ++pBlobsSrc;
+        ++pBlobsDst;
       }
     }
     return *this;
@@ -314,9 +314,9 @@ namespace Blob
     // insertem els blobs de l'origen a l'actual
     while (pBlobsSrc != source.m_blobs.end())
     {
-      pBlobsDst--;
+      --pBlobsDst;
       *pBlobsDst = new CBlob(**pBlobsSrc);
-      pBlobsSrc++;
+      ++pBlobsSrc;
     }
 
     return resultat;
@@ -388,8 +388,8 @@ namespace Blob
     while (itBlobs != m_blobs.end())
     {
       *itResult = (*evaluador)(**itBlobs);
-      itBlobs++;
-      itResult++;
+      ++itBlobs;
+      ++itResult;
     }
     return result;
   }
@@ -601,7 +601,7 @@ namespace Blob
       for (int i = 0; i < numBlobs; i++)
       {
         delete *itBlobs;
-        itBlobs++;
+        ++itBlobs;
       }
       m_blobs.erase(m_blobs.begin(), itBlobs);
     }
@@ -714,7 +714,7 @@ namespace Blob
         trobatBlob = true;
         dst = CBlob(GetBlob(indexBlob));
       }
-      itAvaluacio++;
+      ++itAvaluacio;
       indexBlob++;
     }
   }
@@ -750,7 +750,7 @@ namespace Blob
     while (itBlobs != m_blobs.end())
     {
       delete *itBlobs;
-      itBlobs++;
+      ++itBlobs;
     }
 
     m_blobs.clear();
diff --git a/package_bgs/jmo/blob.cpp b/package_bgs/jmo/blob.cpp
index e76b676e75280badc6456fb14a1e77b11df0f706..3629714ccf0b93e3b244f7c6070e5fe8396da44a 100644
--- a/package_bgs/jmo/blob.cpp
+++ b/package_bgs/jmo/blob.cpp
@@ -373,7 +373,7 @@ namespace Blob
     {
       CV_READ_SEQ_ELEM(edgeactual, reader);
       *itEdges = edgeactual;
-      itEdges++;
+      ++itEdges;
     }
     // ordenem el vector per les Y's i les X's d'esquerra a dreta
     std::sort(vectorEdges.begin(), vectorEdges.end(), comparaCvPoint());
@@ -404,8 +404,8 @@ namespace Blob
         }
         dinsBlob = !dinsBlob;
       }
-      itEdges++;
-      itEdgesSeguent++;
+      ++itEdges;
+      ++itEdgesSeguent;
       if ((*itEdges).y != yActual) dinsBlob = true;
     }
     vectorEdges.clear();
@@ -1039,7 +1039,7 @@ namespace Blob
         vectorEdges.push_back(edgeactual);
     }
 
-    if (vectorEdges.size() == 0) return 0.0;
+    if (vectorEdges.empty()) return 0.0;
 
     // ordenem el vector per les Y's i les X's d'esquerra a dreta
     std::sort(vectorEdges.begin(), vectorEdges.end(), CBlob::comparaCvPoint());
@@ -1059,8 +1059,8 @@ namespace Blob
         return 1.0;
       }
 
-      itEdges++;
-      itEdgesSeguent++;
+      ++itEdges;
+      ++itEdgesSeguent;
       dinsBlob = !dinsBlob;
     }
 
diff --git a/package_bgs/sjn/SJN_MultiCueBGS.cpp b/package_bgs/sjn/SJN_MultiCueBGS.cpp
index ba5392b0e3c524b03c5e7da1ffe9aa1a2c8b7274..31275032e30a544e818d2d1bdad64b70a8b2ab82 100644
--- a/package_bgs/sjn/SJN_MultiCueBGS.cpp
+++ b/package_bgs/sjn/SJN_MultiCueBGS.cpp
@@ -1081,9 +1081,9 @@ double SJN_MultiCueBGS::CalculateHausdorffDist(IplImage* input_image, IplImage*
     }
   }
 
-  if (vInput.size() == 0 && vModel.size() != 0) return (double)vModel.size();
-  else if (vInput.size() != 0 && vModel.size() == 0) return (double)vInput.size();
-  else if (vInput.size() == 0 && vModel.size() == 0) return 0.0;
+  if (vInput.empty() && !vModel.empty()) return (double)vModel.size();
+  else if (!vInput.empty() && vModel.empty()) return (double)vInput.size();
+  else if (vInput.empty() && vModel.empty()) return 0.0;
 
   //Step2: Calculating forward distance h(Model,Image)
   double dDist, temp1, temp2, dMinDist;
@@ -2063,4 +2063,4 @@ void SJN_MultiCueBGS::C_Absorption(int iAbsorbCnt, point pos, short** aContinuCn
   free(pCache->m_Codewords);
   pCache->m_Codewords = pTempCache;
   pCache->m_iNumEntries = k;
-}
\ No newline at end of file
+}