diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc1b63aa4383fe27d62312e7e5e6b6ac8ebc79b5..5c29d079537e390bb50b5b70dfd0e03a5daabc20 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,17 @@ project(bgs)
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
 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 -Wno-unused-parameter -pedantic -Woverloaded-virtual -Wno-unknown-pragmas)
+  
+  # -ansi does not compile with sjn module
+  #ADD_DEFINITIONS(-ansi)
+
+  # if you like to have warinings about conversions, e.g. double->int or double->float etc., or float compare
+  #ADD_DEFINITIONS(-Wconversion -Wfloat-equal)
+endif(UNIX)
+
 find_package(OpenCV REQUIRED)
 
 if(${OpenCV_VERSION} VERSION_LESS 2.3.1)
diff --git a/package_analysis/ForegroundMaskAnalysis.cpp b/package_analysis/ForegroundMaskAnalysis.cpp
index 4df9ed0c10933c0ad8051538d0e6f8435d46bd7c..eddc9088d9e6e62f9f193793f389ed3ab60b236d 100644
--- a/package_analysis/ForegroundMaskAnalysis.cpp
+++ b/package_analysis/ForegroundMaskAnalysis.cpp
@@ -18,7 +18,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 
 namespace bgslibrary
 {
-  ForegroundMaskAnalysis::ForegroundMaskAnalysis() : firstTime(true), stopAt(0), showOutput(true), img_ref_path("")
+  ForegroundMaskAnalysis::ForegroundMaskAnalysis() : firstTime(true), showOutput(true), stopAt(0), img_ref_path("")
   {
     std::cout << "ForegroundMaskAnalysis()" << std::endl;
   }
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/ae/NPBGSubtractor.cpp b/package_bgs/ae/NPBGSubtractor.cpp
index 935d26ef95da261becb024d62165c2e571c9af46..3f0620f6281e24f6a3eddd34024835bb0adc3b29 100644
--- a/package_bgs/ae/NPBGSubtractor.cpp
+++ b/package_bgs/ae/NPBGSubtractor.cpp
@@ -902,7 +902,7 @@ void NPBGSubtractor::NPBGSubtraction_Subset_Kernel(
   double p;
   double th;
 
-  double alpha,beta,beta_over_alpha, betau,betau_over_alpha;
+  double alpha;
 
   alpha= AlphaValue;
 
@@ -954,11 +954,11 @@ void NPBGSubtractor::NPBGSubtraction_Subset_Kernel(
 
     unsigned int kerneltablewidth=2*KernelHalfWidth+1;
 
-    beta=3.0;    // minimum bound on the range.
-    betau=100.0;
+    double beta=3.0;    // minimum bound on the range.
+    double betau=100.0;
 
-    beta_over_alpha = beta / alpha;
-    betau_over_alpha = betau / alpha;
+    double beta_over_alpha = beta / alpha;
+    double betau_over_alpha = betau / alpha;
 
 
     double brightness_lowerbound = 1-alpha;
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/av/TBackgroundVuMeter.cpp b/package_bgs/av/TBackgroundVuMeter.cpp
index 5c802ce4071633edb901d07b4d4173e7d3220587..7fade7a5a2a10629df3d63798d347771749d50b2 100644
--- a/package_bgs/av/TBackgroundVuMeter.cpp
+++ b/package_bgs/av/TBackgroundVuMeter.cpp
@@ -27,11 +27,11 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 
 TBackgroundVuMeter::TBackgroundVuMeter(void)
   : m_pHist(NULL)
-  , m_nBinSize(8)
   , m_nBinCount(0)
+  , m_nBinSize(8)
+  , m_nCount(0)
   , m_fAlpha(0.995)
   , m_fThreshold(0.03)
-  , m_nCount(0)
 {
   std::cout << "TBackgroundVuMeter()" << std::endl;
 }
@@ -44,13 +44,11 @@ TBackgroundVuMeter::~TBackgroundVuMeter(void)
 
 void TBackgroundVuMeter::Clear(void)
 {
-  int i;
-
   TBackground::Clear();
 
   if(m_pHist != NULL)
   {
-    for(i = 0; i < m_nBinCount; ++i)
+    for(int i = 0; i < m_nBinCount; ++i)
     {
       if(m_pHist[i] != NULL)
         cvReleaseImage(&m_pHist[i]);
@@ -66,7 +64,6 @@ void TBackgroundVuMeter::Clear(void)
 
 void TBackgroundVuMeter::Reset(void)
 {
-  int i;
   float fVal = 0.0;
 
   TBackground::Reset();
@@ -76,7 +73,7 @@ void TBackgroundVuMeter::Reset(void)
     //		fVal = (m_nBinCount != 0) ? (float)(1.0 / (double)m_nBinCount) : (float)0.0;
     fVal = 0.0;
 
-    for(i = 0; i < m_nBinCount; ++i)
+    for(int i = 0; i < m_nBinCount; ++i)
     {
       if(m_pHist[i] != NULL)
       {
@@ -175,7 +172,6 @@ int TBackgroundVuMeter::SetParameterValue(int nInd, std::string csNew)
 int TBackgroundVuMeter::Init(IplImage * pSource)
 {
   int nErr = 0;
-  int i;
   int nbl, nbc;
 
   Clear();
@@ -208,7 +204,7 @@ int TBackgroundVuMeter::Init(IplImage * pSource)
   // creation des images
   if(!nErr)
   {
-    for(i = 0; i < m_nBinCount; ++i)
+    for(int i = 0; i < m_nBinCount; ++i)
     {
       m_pHist[i] = cvCreateImage(cvSize(nbc, nbl), IPL_DEPTH_32F, 1);
 
@@ -229,7 +225,6 @@ bool TBackgroundVuMeter::isInitOk(IplImage * pSource, IplImage *pBackground, Ipl
 {
   bool bResult = true;
   int i;
-  int nbl, nbc;
 
   bResult = TBackground::isInitOk(pSource, pBackground, pMotionMask);
 
@@ -249,8 +244,8 @@ bool TBackgroundVuMeter::isInitOk(IplImage * pSource, IplImage *pBackground, Ipl
 
   if(bResult)
   {
-    nbl = pSource->height;
-    nbc = pSource->width;
+    int nbl = pSource->height;
+    int nbc = pSource->width;
 
     for(i = 0; i < m_nBinCount; ++i)
     {
@@ -265,10 +260,8 @@ bool TBackgroundVuMeter::isInitOk(IplImage * pSource, IplImage *pBackground, Ipl
 int TBackgroundVuMeter::UpdateBackground(IplImage *pSource, IplImage *pBackground, IplImage *pMotionMask)
 {
   int nErr = 0;
-  int i, l, c, nbl, nbc;
   unsigned char *ptrs, *ptrb, *ptrm;
   float *ptr1, *ptr2;
-  unsigned char v;
 
   if(!isInitOk(pSource, pBackground, pMotionMask))
     nErr = Init(pSource);
@@ -276,24 +269,24 @@ int TBackgroundVuMeter::UpdateBackground(IplImage *pSource, IplImage *pBackgroun
   if(!nErr)
   {
     m_nCount++;
-    nbc = pSource->width;
-    nbl = pSource->height;
-    v = m_nBinSize;
+    int nbc = pSource->width;
+    int nbl = pSource->height;
+    unsigned char v = m_nBinSize;
 
     // multiplie tout par alpha
-    for(i = 0; i < m_nBinCount; ++i)
+    for(int i = 0; i < m_nBinCount; ++i)
       cvConvertScale(m_pHist[i], m_pHist[i], m_fAlpha, 0.0);
 
-    for(l = 0; l < nbl; ++l)
+    for(int l = 0; l < nbl; ++l)
     {
       ptrs = (unsigned char *)(pSource->imageData + pSource->widthStep * l);
       ptrm = (unsigned char *)(pMotionMask->imageData + pMotionMask->widthStep * l);
       ptrb = (unsigned char *)(pBackground->imageData + pBackground->widthStep * l);
 
-      for(c = 0; c < nbc; ++c, ptrs++, ptrb++, ptrm++)
+      for(int c = 0; c < nbc; ++c, ptrs++, ptrb++, ptrm++)
       {
         // recherche le bin � augmenter
-        i = *ptrs / v;
+        int i = *ptrs / v;
         
         if(i < 0 || i >= m_nBinCount)
           i = 0;
@@ -341,7 +334,6 @@ IplImage *TBackgroundVuMeter::CreateTestImg()
 int TBackgroundVuMeter::UpdateTest(IplImage *pSource, IplImage *pBackground, IplImage *pTest, int nX, int nY, int nInd)
 {
   int nErr = 0;
-  int i, nbl, nbc;
   float *ptrf;
 
   if(pTest == NULL || !isInitOk(pSource, pBackground, pSource)) 
@@ -349,8 +341,8 @@ int TBackgroundVuMeter::UpdateTest(IplImage *pSource, IplImage *pBackground, Ipl
 
   if(!nErr)
   {
-    nbl = pTest->height;
-    nbc = pTest->width;
+    int nbl = pTest->height;
+    int nbc = pTest->width;
 
     if(nbl != 100 || nbc != m_nBinCount) 
       nErr = 1;
@@ -363,7 +355,7 @@ int TBackgroundVuMeter::UpdateTest(IplImage *pSource, IplImage *pBackground, Ipl
   {
     cvSetZero(pTest);
 
-    for(i = 0; i < m_nBinCount; ++i)
+    for(int i = 0; i < m_nBinCount; ++i)
     {
       ptrf = (float *)(m_pHist[i]->imageData + m_pHist[i]->widthStep * nY);
       ptrf += nX;
diff --git a/package_bgs/db/IndependentMultimodalBGS.cpp b/package_bgs/db/IndependentMultimodalBGS.cpp
index c05ee5cb0684117637cebfa23d4989c7177d92a6..5312075379640840adfa22993158942cf6fe7c86 100644
--- a/package_bgs/db/IndependentMultimodalBGS.cpp
+++ b/package_bgs/db/IndependentMultimodalBGS.cpp
@@ -1,6 +1,6 @@
 #include "IndependentMultimodalBGS.h"
 
-IndependentMultimodalBGS::IndependentMultimodalBGS() : firstTime(true), fps(10), showOutput(true){
+IndependentMultimodalBGS::IndependentMultimodalBGS() : fps(10), firstTime(true), showOutput(true){
   pIMBS = new BackgroundSubtractorIMBS(fps);
 }
 IndependentMultimodalBGS::~IndependentMultimodalBGS(){
diff --git a/package_bgs/dp/DPAdaptiveMedianBGS.cpp b/package_bgs/dp/DPAdaptiveMedianBGS.cpp
index d7ebcd19ab53def6396097f32ba5865ddd2f520b..e9ef4feff559aa25a1dee485b0e80ca4397f56f0 100644
--- a/package_bgs/dp/DPAdaptiveMedianBGS.cpp
+++ b/package_bgs/dp/DPAdaptiveMedianBGS.cpp
@@ -16,7 +16,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "DPAdaptiveMedianBGS.h"
 
-DPAdaptiveMedianBGS::DPAdaptiveMedianBGS() : firstTime(true), frameNumber(0), showOutput(true), threshold(40), samplingRate(7), learningFrames(30)
+DPAdaptiveMedianBGS::DPAdaptiveMedianBGS() : firstTime(true), frameNumber(0), threshold(40), samplingRate(7), learningFrames(30), showOutput(true) 
 {
   std::cout << "DPAdaptiveMedianBGS()" << std::endl;
 }
@@ -101,4 +101,4 @@ void DPAdaptiveMedianBGS::loadConfig()
   showOutput = cvReadIntByName(fs, 0, "showOutput", true);
 
   cvReleaseFileStorage(&fs);
-}
\ No newline at end of file
+}
diff --git a/package_bgs/dp/DPEigenbackgroundBGS.cpp b/package_bgs/dp/DPEigenbackgroundBGS.cpp
index 6d2c6ba12cdf426b49831559f72bf443a5f904c5..630d9cce521211c62f16408e9f3deb5f964a59c6 100644
--- a/package_bgs/dp/DPEigenbackgroundBGS.cpp
+++ b/package_bgs/dp/DPEigenbackgroundBGS.cpp
@@ -16,7 +16,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "DPEigenbackgroundBGS.h"
 
-DPEigenbackgroundBGS::DPEigenbackgroundBGS() : firstTime(true), frameNumber(0), showOutput(true), threshold(225), historySize(20), embeddedDim(10)
+DPEigenbackgroundBGS::DPEigenbackgroundBGS() : firstTime(true), frameNumber(0), threshold(225), historySize(20), embeddedDim(10), showOutput(true) 
 {
   std::cout << "DPEigenbackgroundBGS()" << std::endl;
 }
@@ -103,4 +103,4 @@ void DPEigenbackgroundBGS::loadConfig()
   showOutput = cvReadIntByName(fs, 0, "showOutput", true);
 
   cvReleaseFileStorage(&fs);
-}
\ No newline at end of file
+}
diff --git a/package_bgs/dp/DPGrimsonGMMBGS.cpp b/package_bgs/dp/DPGrimsonGMMBGS.cpp
index 0d6ad42fa6c59c4a356dccdf0ce054e8ceeaed42..ae5486024289ce9582028d10b00eded772100c73 100644
--- a/package_bgs/dp/DPGrimsonGMMBGS.cpp
+++ b/package_bgs/dp/DPGrimsonGMMBGS.cpp
@@ -16,7 +16,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "DPGrimsonGMMBGS.h"
 
-DPGrimsonGMMBGS::DPGrimsonGMMBGS() : firstTime(true), frameNumber(0), showOutput(true), threshold(9.0), alpha(0.01), gaussians(3)
+DPGrimsonGMMBGS::DPGrimsonGMMBGS() : firstTime(true), frameNumber(0), threshold(9.0), alpha(0.01), gaussians(3), showOutput(true) 
 {
   std::cout << "DPGrimsonGMMBGS()" << std::endl;
 }
@@ -102,4 +102,4 @@ void DPGrimsonGMMBGS::loadConfig()
   showOutput = cvReadIntByName(fs, 0, "showOutput", true);
 
   cvReleaseFileStorage(&fs);
-}
\ No newline at end of file
+}
diff --git a/package_bgs/dp/DPZivkovicAGMMBGS.cpp b/package_bgs/dp/DPZivkovicAGMMBGS.cpp
index 16f991cc96ed1d43683b455764464ff1c4dd1ab8..e8276f6bd8ceaa328faedc971b842493f7e70edb 100644
--- a/package_bgs/dp/DPZivkovicAGMMBGS.cpp
+++ b/package_bgs/dp/DPZivkovicAGMMBGS.cpp
@@ -16,7 +16,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "DPZivkovicAGMMBGS.h"
 
-DPZivkovicAGMMBGS::DPZivkovicAGMMBGS() : firstTime(true), frameNumber(0), showOutput(true), threshold(25.0f), alpha(0.001f), gaussians(3)
+DPZivkovicAGMMBGS::DPZivkovicAGMMBGS() : firstTime(true), frameNumber(0), threshold(25.0f), alpha(0.001f), gaussians(3), showOutput(true) 
 {
   std::cout << "DPZivkovicAGMMBGS()" << std::endl;
 }
@@ -101,4 +101,4 @@ void DPZivkovicAGMMBGS::loadConfig()
   showOutput = cvReadIntByName(fs, 0, "showOutput", true);
 
   cvReleaseFileStorage(&fs);
-}
\ No newline at end of file
+}
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/MultiLayerBGS.cpp b/package_bgs/jmo/MultiLayerBGS.cpp
index 46b4489ab4e09f7fb1b2b0afc0e6fad44ca0c508..03e223f1f49e44816af126238d5a50f3217883f4 100644
--- a/package_bgs/jmo/MultiLayerBGS.cpp
+++ b/package_bgs/jmo/MultiLayerBGS.cpp
@@ -16,9 +16,8 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "MultiLayerBGS.h"
 
-MultiLayerBGS::MultiLayerBGS() : firstTime(true), showOutput(true),
-bg_model_preload(""), saveModel(false), disableLearning(false), disableDetectMode(true), loadDefaultParams(true),
-detectAfter(0), frameNumber(0)
+MultiLayerBGS::MultiLayerBGS() : firstTime(true), frameNumber(0), showOutput(true), 
+saveModel(false), disableDetectMode(true), disableLearning(false), detectAfter(0), bg_model_preload(""), loadDefaultParams(true)
 {
   std::cout << "MultiLayerBGS()" << std::endl;
 }
@@ -329,4 +328,4 @@ void MultiLayerBGS::loadConfig()
   showOutput = cvReadIntByName(fs, 0, "showOutput", true);
 
   cvReleaseFileStorage(&fs);
-}
\ No newline at end of file
+}
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..83db6ec62153ca3a40136dc9df2a3ffbb762dd94 100644
--- a/package_bgs/sjn/SJN_MultiCueBGS.cpp
+++ b/package_bgs/sjn/SJN_MultiCueBGS.cpp
@@ -207,7 +207,6 @@ void SJN_MultiCueBGS::Destroy()
 {
   if (g_bModelMemAllocated == FALSE && g_bNonModelMemAllocated == FALSE) return;
 
-  int i, j;
   short nNeighborNum = g_nNeighborNum;
 
   if (g_bModelMemAllocated == TRUE){
@@ -221,28 +220,28 @@ void SJN_MultiCueBGS::Destroy()
 
     cvReleaseImage(&g_ResizedFrame);
 
-    for (i = 0; i < g_iRHeight; i++){
-      for (j = 0; j < g_iRWidth; j++) free(g_aGaussFilteredFrame[i][j]);
+    for (int i = 0; i < g_iRHeight; i++){
+      for (int j = 0; j < g_iRWidth; j++) free(g_aGaussFilteredFrame[i][j]);
       free(g_aGaussFilteredFrame[i]);
     }
     free(g_aGaussFilteredFrame);
 
-    for (i = 0; i < g_iRHeight; i++){
-      for (j = 0; j < g_iRWidth; j++) free(g_aXYZFrame[i][j]);
+    for (int i = 0; i < g_iRHeight; i++){
+      for (int j = 0; j < g_iRWidth; j++) free(g_aXYZFrame[i][j]);
       free(g_aXYZFrame[i]);
     }
     free(g_aXYZFrame);
 
-    for (i = 0; i < g_iRHeight; i++) free(g_aLandmarkArray[i]);
+    for (int i = 0; i < g_iRHeight; i++) free(g_aLandmarkArray[i]);
     free(g_aLandmarkArray);
 
-    for (i = 0; i < g_iRHeight; i++) free(g_aResizedForeMap[i]);
+    for (int i = 0; i < g_iRHeight; i++) free(g_aResizedForeMap[i]);
     free(g_aResizedForeMap);
 
-    for (i = 0; i < g_iHeight; i++) free(g_aForegroundMap[i]);
+    for (int i = 0; i < g_iHeight; i++) free(g_aForegroundMap[i]);
     free(g_aForegroundMap);
 
-    for (i = 0; i < g_iRHeight; i++) free(g_aUpdateMap[i]);
+    for (int i = 0; i < g_iRHeight; i++) free(g_aUpdateMap[i]);
     free(g_aUpdateMap);
 
     free(g_BoundBoxInfo->m_aLeft); free(g_BoundBoxInfo->m_aRight); free(g_BoundBoxInfo->m_aBottom); free(g_BoundBoxInfo->m_aUpper);
@@ -1081,9 +1080,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;
@@ -1805,14 +1804,13 @@ void SJN_MultiCueBGS::C_ReleaseColorModelRelatedMemory(){
 void SJN_MultiCueBGS::C_CodebookConstruction(uchar* aP, int iPosX, int iPosY, short nTrainVolRange, float fLearningRate, ColorModel* pC){
 
   //Step1: matching
-  int i, j;
   short nMatchedIndex;
 
   float fNegLearningRate = 1 - fLearningRate;
 
   nMatchedIndex = -1;
 
-  for (i = 0; i < pC->m_iNumEntries; i++){
+  for (int i = 0; i < pC->m_iNumEntries; i++){
 
     //Checking X
     if (pC->m_Codewords[i]->m_dMean[0] - nTrainVolRange <= aP[0] && aP[0] <= pC->m_Codewords[i]->m_dMean[0] + nTrainVolRange){
@@ -1834,7 +1832,7 @@ void SJN_MultiCueBGS::C_CodebookConstruction(uchar* aP, int iPosX, int iPosY, sh
     if (pC->m_iElementArraySize == pC->m_iNumEntries){
       pC->m_iElementArraySize = pC->m_iElementArraySize + 5;
       ColorCodeword **temp = (ColorCodeword**)malloc(sizeof(ColorCodeword*)*pC->m_iElementArraySize);
-      for (j = 0; j < pC->m_iNumEntries; j++){
+      for (int j = 0; j < pC->m_iNumEntries; j++){
         temp[j] = pC->m_Codewords[j];
         pC->m_Codewords[j] = NULL;
       }
@@ -1868,7 +1866,7 @@ void SJN_MultiCueBGS::C_CodebookConstruction(uchar* aP, int iPosX, int iPosY, sh
   if (pC->m_bID == 1){
     //1. m_iMNRL update
     int iNegTime;
-    for (i = 0; i < pC->m_iNumEntries; i++){
+    for (int i = 0; i < pC->m_iNumEntries; i++){
       //m_iMNRL update
       iNegTime = pC->m_iTotal - pC->m_Codewords[i]->m_iT_last_time + pC->m_Codewords[i]->m_iT_first_time - 1;
       if (pC->m_Codewords[i]->m_iMNRL < iNegTime) pC->m_Codewords[i]->m_iMNRL = iNegTime;
@@ -2063,4 +2061,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
+}
diff --git a/package_bgs/tb/T2FGMM_UM.cpp b/package_bgs/tb/T2FGMM_UM.cpp
index 1f92ba6fcf0c69b321878abbdeccfb1718dba2e0..31a5338068580281d41a3d0af2c959a31d33b8a2 100644
--- a/package_bgs/tb/T2FGMM_UM.cpp
+++ b/package_bgs/tb/T2FGMM_UM.cpp
@@ -16,7 +16,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "T2FGMM_UM.h"
 
-T2FGMM_UM::T2FGMM_UM() : firstTime(true), frameNumber(0), showOutput(true), threshold(9.0), alpha(0.01), gaussians(3), km(1.5f), kv(0.6f)
+T2FGMM_UM::T2FGMM_UM() : firstTime(true), frameNumber(0), threshold(9.0), alpha(0.01), km(1.5f), kv(0.6f), gaussians(3), showOutput(true) 
 {
   std::cout << "T2FGMM_UM()" << std::endl;
 }
@@ -108,4 +108,4 @@ void T2FGMM_UM::loadConfig()
   showOutput = cvReadIntByName(fs, 0, "showOutput", true);
 
   cvReleaseFileStorage(&fs);
-}
\ No newline at end of file
+}
diff --git a/package_bgs/tb/T2FGMM_UV.cpp b/package_bgs/tb/T2FGMM_UV.cpp
index 3b99dd637d85d57cae2b92f53d4856a2a3fdd738..c6f99f198f2dd498402ea1d9526bd635358541b9 100644
--- a/package_bgs/tb/T2FGMM_UV.cpp
+++ b/package_bgs/tb/T2FGMM_UV.cpp
@@ -16,7 +16,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "T2FGMM_UV.h"
 
-T2FGMM_UV::T2FGMM_UV() : firstTime(true), frameNumber(0), showOutput(true), threshold(9.0), alpha(0.01), gaussians(3), km(1.5f), kv(0.6f)
+T2FGMM_UV::T2FGMM_UV() : firstTime(true), frameNumber(0), threshold(9.0), alpha(0.01), km(1.5f), kv(0.6f), gaussians(3), showOutput(true) 
 {
   std::cout << "T2FGMM_UV()" << std::endl;
 }
@@ -108,4 +108,4 @@ void T2FGMM_UV::loadConfig()
   showOutput = cvReadIntByName(fs, 0, "showOutput", true);
 
   cvReleaseFileStorage(&fs);
-}
\ No newline at end of file
+}
diff --git a/package_bgs/tb/T2FMRF_UM.cpp b/package_bgs/tb/T2FMRF_UM.cpp
index 439cc53af1adbedc5bb51ff595d997af6a88a6db..5b41d8ae2c1acb72f43eb9bbedd6662577f22b3a 100644
--- a/package_bgs/tb/T2FMRF_UM.cpp
+++ b/package_bgs/tb/T2FMRF_UM.cpp
@@ -16,8 +16,8 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "T2FMRF_UM.h"
 
-T2FMRF_UM::T2FMRF_UM() : firstTime(true), frameNumber(0), showOutput(true), threshold(9.0), alpha(0.01), 
-gaussians(3), km(2.f), kv(0.9f)
+T2FMRF_UM::T2FMRF_UM() : firstTime(true), frameNumber(0), threshold(9.0), alpha(0.01), 
+km(2.f), kv(0.9f), gaussians(3), showOutput(true) 
 {
   std::cout << "T2FMRF_UM()" << std::endl;
 }
diff --git a/package_bgs/tb/T2FMRF_UV.cpp b/package_bgs/tb/T2FMRF_UV.cpp
index 0ada1f7fa7488018bc268b8f59f01531529e5467..03f259557a9b2a514e74926839a3a5cdfb93a780 100644
--- a/package_bgs/tb/T2FMRF_UV.cpp
+++ b/package_bgs/tb/T2FMRF_UV.cpp
@@ -16,8 +16,8 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "T2FMRF_UV.h"
 
-T2FMRF_UV::T2FMRF_UV() : firstTime(true), frameNumber(0), showOutput(true), threshold(9.0), alpha(0.01), 
-gaussians(3), km(2.f), kv(0.9f)
+T2FMRF_UV::T2FMRF_UV() : firstTime(true), frameNumber(0), threshold(9.0), alpha(0.01), 
+km(2.f), kv(0.9f), gaussians(3), showOutput(true) 
 {
   std::cout << "T2FMRF_UV()" << std::endl;
 }