diff --git a/example_macosx/CMakeLists.txt b/example_macosx/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..107303fdf769fda32d152e24c25343e9b24cd12a
--- /dev/null
+++ b/example_macosx/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(FrameDifferenceTest)
+
+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)
+
+file(GLOB source FrameDifferenceTest.cpp)
+
+file(GLOB_RECURSE bgs_src ../package_bgs/*.cpp ../package_bgs/*.c)
+file(GLOB_RECURSE bgs_include ../package_bgs/*.h)
+
+include_directories(${CMAKE_SOURCE_DIR})
+
+add_library(bgs SHARED ${bgs_src})
+target_link_libraries(bgs ${OpenCV_LIBS})
+set_property(TARGET bgs PROPERTY PUBLIC_HEADER ${bgs_include})
+
+add_executable(FrameDifferenceTest ${source})
+target_link_libraries(FrameDifferenceTest ${OpenCV_LIBS} bgs)
+
diff --git a/example_macosx/FrameDifferenceTest.cpp b/example_macosx/FrameDifferenceTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..56f1e7cb3cc0c620bb0cdc2c1ca90a2725089a58
--- /dev/null
+++ b/example_macosx/FrameDifferenceTest.cpp
@@ -0,0 +1,49 @@
+#include <iostream>
+#include <cv.h>
+#include <highgui.h>
+
+#include "../package_bgs/FrameDifferenceBGS.h"
+
+int main(int argc, char **argv)
+{
+  CvCapture *capture = 0;
+  capture = cvCaptureFromCAM(0);
+
+  if(!capture){
+    std::cerr << "Cannot initialize video!" << std::endl;
+    return -1;
+  }
+
+  IBGS *bgs;
+  bgs = new FrameDifferenceBGS;
+
+  IplImage *frame;
+  while(1)
+  {
+    frame = cvQueryFrame(capture);
+    if(!frame) break;
+
+    cv::Mat img_input(frame);
+    cv::imshow("Input", img_input);
+
+    cv::Mat img_mask;
+    cv::Mat img_bkgmodel;
+
+    // by default, it shows automatically the foreground mask image
+    bgs->process(img_input, img_mask, img_bkgmodel);
+
+    //if(!img_mask.empty())
+    //  cv::imshow("Foreground", img_mask);
+    //  do something
+
+    if(cvWaitKey(33) >= 0)
+		  break;
+  }
+
+  delete bgs;
+
+  cvDestroyAllWindows();
+  cvReleaseCapture(&capture);
+
+  return 0;
+}
diff --git a/example_macosx/README.txt b/example_macosx/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5558b71484046423834c91f24e75c4bd36d5bcd6
--- /dev/null
+++ b/example_macosx/README.txt
@@ -0,0 +1,9 @@
+#
+# HOW TO COMPILE ON LINUX
+#
+# Requirements:
+# cmake >= 2.8
+# opencv >= 2.3.1
+
+cmake .
+make
diff --git a/example_macosx/config/KEEP_THIS_FOLDER b/example_macosx/config/KEEP_THIS_FOLDER
new file mode 100644
index 0000000000000000000000000000000000000000..24353bcb3c57d58895a3c2500232445466fabd6b
--- /dev/null
+++ b/example_macosx/config/KEEP_THIS_FOLDER
@@ -0,0 +1 @@
+bgslibrary uses this folder to store the configuration files
\ No newline at end of file
diff --git a/package_bgs/sjn/SJN_MultiCueBGS.h b/package_bgs/sjn/SJN_MultiCueBGS.h
index e81ab1a430a2e0453c81b03034bb4213639aa19b..0891c08c16d9d319a6f12290df3d5dd2d7884a29 100644
--- a/package_bgs/sjn/SJN_MultiCueBGS.h
+++ b/package_bgs/sjn/SJN_MultiCueBGS.h
@@ -33,7 +33,9 @@ typedef int BOOL;
   #define TRUE 1
 #endif
 
+#if !defined(__APPLE__)
 #include <malloc.h>
+#endif
 #include "math.h"
 
 #include <vector>