diff --git a/modules/viz/CMakeLists.txt b/modules/viz/CMakeLists.txt
index 0509478fd5..b45060371b 100644
--- a/modules/viz/CMakeLists.txt
+++ b/modules/viz/CMakeLists.txt
@@ -36,26 +36,7 @@ macro(find_vtk)
   endif()
 endmacro()
 
-macro(find_boost)
-  # Disable the config mode of find_package(Boost)
-  set(Boost_NO_BOOST_CMAKE ON)
-  set(Boost_USE_STATIC_LIBS ON)
-
-  find_package(Boost 1.49.0 REQUIRED COMPONENTS system thread)
-
-  if(Boost_FOUND)
-    set(HAVE_BOOST ON)
-
-    # Obtain diagnostic information about Boost's automatic linking outputted during compilation time.
-    add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
-    include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
-    link_directories(${Boost_LIBRARY_DIRS})
-    message(STATUS "Boost found (include: ${Boost_INCLUDE_DIRS})")
-  endif()
-endmacro()
-
 find_vtk()
-find_boost()
 
 
 find_package(OpenGL)
diff --git a/modules/viz/include/opencv2/viz/viz3d.hpp b/modules/viz/include/opencv2/viz/viz3d.hpp
index 9386094d78..fe0851a604 100644
--- a/modules/viz/include/opencv2/viz/viz3d.hpp
+++ b/modules/viz/include/opencv2/viz/viz3d.hpp
@@ -59,7 +59,8 @@ namespace temp_viz
         void spin ();
         void spinOnce (int time = 1, bool force_redraw = false);
 	
-	void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = NULL);
+	void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = 0);
+	void registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie = 0);
 
     private:
         Viz3d(const Viz3d&);
diff --git a/modules/viz/src/interactor_style.cpp b/modules/viz/src/interactor_style.cpp
index 32fe6a104a..00a1ed1725 100644
--- a/modules/viz/src/interactor_style.cpp
+++ b/modules/viz/src/interactor_style.cpp
@@ -36,9 +36,13 @@ void temp_viz::InteractorStyle::Initialize ()
     init_ = true;
     stereo_anaglyph_mask_default_ = true;
     
-    // Initialize the keyboard callback as none
-    keyboardCallback_ = NULL;
-    keyboard_callback_cookie_ = NULL;
+    // Initialize the keyboard event callback as none
+    keyboardCallback_ = 0;
+    keyboard_callback_cookie_ = 0;
+    
+    // Initialize the mouse event callback as none
+    mouseCallback_ = 0;
+    mouse_callback_cookie_ = 0;
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////
@@ -142,23 +146,19 @@ void temp_viz::InteractorStyle::OnChar ()
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////
-boost::signals2::connection temp_viz::InteractorStyle::registerMouseCallback (boost::function<void (const cv::MouseEvent&)> callback)
+void temp_viz::InteractorStyle::registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie)
 {
-    return (mouse_signal_.connect (callback));
+    // Register the callback function and store the user data
+    mouseCallback_ = callback;
+    mouse_callback_cookie_ = cookie;
 }
 
-//////////////////////////////////////////////////////////////////////////////////////////////
-// boost::signals2::connection temp_viz::InteractorStyle::registerKeyboardCallback (boost::function<void (const cv::KeyboardEvent&)> callback)
-// {
-//     return (keyboard_signal_.connect (callback));
-// }
-
 //////////////////////////////////////////////////////////////////////////////////////////////
 void temp_viz::InteractorStyle::registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void *cookie)
 {
-    /* Register the new callback function by assigning it to the internal callback function pointer */
+    // Register the callback function and store the user data
     keyboardCallback_ = callback;
-    keyboard_callback_cookie_ = NULL;
+    keyboard_callback_cookie_ = cookie;
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////
@@ -521,9 +521,8 @@ temp_viz::InteractorStyle::OnKeyDown ()
 
     KeyboardEvent event (true, Interactor->GetKeySym (), Interactor->GetKeyCode (), Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
     // Check if there is a keyboard callback registered
-    if (keyboardCallback_ != NULL)
+    if (keyboardCallback_)
       keyboardCallback_(event, keyboard_callback_cookie_);
-    //keyboard_signal_ (event);
 
     renderer_->Render ();
     Interactor->Render ();
@@ -534,9 +533,9 @@ void temp_viz::InteractorStyle::OnKeyUp ()
 {
     KeyboardEvent event (false, Interactor->GetKeySym (), Interactor->GetKeyCode (), Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
     // Check if there is a keyboard callback registered
-    if (keyboardCallback_ != NULL)
+    if (keyboardCallback_)
       keyboardCallback_(event, keyboard_callback_cookie_);
-//     keyboard_signal_ (event);
+    
     Superclass::OnKeyUp ();
 }
 
@@ -545,7 +544,8 @@ void temp_viz::InteractorStyle::OnMouseMove ()
 {
     Vec2i p(Interactor->GetEventPosition());
     MouseEvent event (MouseEvent::MouseMove, MouseEvent::NoButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
     Superclass::OnMouseMove ();
 }
 
@@ -555,7 +555,8 @@ void temp_viz::InteractorStyle::OnLeftButtonDown ()
     Vec2i p(Interactor->GetEventPosition());
     MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick;
     MouseEvent event (type, MouseEvent::LeftButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
     Superclass::OnLeftButtonDown ();
 }
 
@@ -564,7 +565,8 @@ void temp_viz::InteractorStyle::OnLeftButtonUp ()
 {
     Vec2i p(Interactor->GetEventPosition());
     MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::LeftButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
     Superclass::OnLeftButtonUp ();
 }
 
@@ -575,7 +577,8 @@ void temp_viz::InteractorStyle::OnMiddleButtonDown ()
 
     MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick;
     MouseEvent event (type, MouseEvent::MiddleButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
     Superclass::OnMiddleButtonDown ();
 }
 
@@ -584,7 +587,8 @@ void temp_viz::InteractorStyle::OnMiddleButtonUp ()
 {
     Vec2i p(Interactor->GetEventPosition());
     MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::MiddleButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
     Superclass::OnMiddleButtonUp ();
 }
 
@@ -595,7 +599,8 @@ void temp_viz::InteractorStyle::OnRightButtonDown ()
 
     MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick;
     MouseEvent event (type, MouseEvent::RightButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
     Superclass::OnRightButtonDown ();
 }
 
@@ -604,7 +609,8 @@ void temp_viz::InteractorStyle::OnRightButtonUp ()
 {
     Vec2i p(Interactor->GetEventPosition());
     MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::RightButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
     Superclass::OnRightButtonUp ();
 }
 
@@ -613,9 +619,11 @@ void temp_viz::InteractorStyle::OnMouseWheelForward ()
 {
     Vec2i p(Interactor->GetEventPosition());
     MouseEvent event (MouseEvent::MouseScrollUp, MouseEvent::VScroll, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
-    if (Interactor->GetRepeatCount ())
-        mouse_signal_ (event);
+    // If a mouse callback registered, call it!
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
+    if (Interactor->GetRepeatCount () && mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
 
     if (Interactor->GetAltKey ())
     {
@@ -643,10 +651,13 @@ void temp_viz::InteractorStyle::OnMouseWheelBackward ()
 {
     Vec2i p(Interactor->GetEventPosition());
     MouseEvent event (MouseEvent::MouseScrollDown, MouseEvent::VScroll, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
-    mouse_signal_ (event);
-    if (Interactor->GetRepeatCount ())
-        mouse_signal_ (event);
-
+    // If a mouse callback registered, call it!
+    if (mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
+    
+    if (Interactor->GetRepeatCount () && mouseCallback_)
+      mouseCallback_(event, mouse_callback_cookie_);
+      
     if (Interactor->GetAltKey ())
     {
         // zoom
diff --git a/modules/viz/src/precomp.hpp b/modules/viz/src/precomp.hpp
index ec60d5021f..5e73951731 100644
--- a/modules/viz/src/precomp.hpp
+++ b/modules/viz/src/precomp.hpp
@@ -4,11 +4,11 @@
 #include <map>
 #include <vector>
 
-
+/*
 #include <boost/function.hpp>
 #include <boost/bind.hpp>
 #include <boost/signals2.hpp>
-#include <boost/thread.hpp>
+#include <boost/thread.hpp>*/
 
 #include <Eigen/Geometry>
 
diff --git a/modules/viz/src/q/interactor_style.h b/modules/viz/src/q/interactor_style.h
index 6c99d88e10..3a196a7285 100644
--- a/modules/viz/src/q/interactor_style.h
+++ b/modules/viz/src/q/interactor_style.h
@@ -56,38 +56,22 @@ namespace temp_viz
                   */
             inline void setCloudActorMap (const cv::Ptr<CloudActorMap>& actors) { actors_ = actors; }
 
-
             /** \brief Pass a set of renderers to the interactor style.
                   * \param[in] rens the vtkRendererCollection to use
                   */
             void setRenderer (vtkSmartPointer<vtkRenderer>& ren) { renderer_ = ren; }
 
             /** \brief Register a callback function for mouse events
-                  * \param[in] cb a boost function that will be registered as a callback for a mouse event
-                  * \return a connection object that allows to disconnect the callback function.
-                  */
-            boost::signals2::connection registerMouseCallback (boost::function<void (const cv::MouseEvent&)> cb);
+		  * \param[in] ccallback function that will be registered as a callback for a mouse event
+		  * \param[in] cookie for passing user data to callback
+		  */
+	    void registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie = 0);
 
             /** \brief Register a callback function for keyboard events
                   * \param[in] callback a function that will be registered as a callback for a keyboard event
                   * \param[in] cookie user data passed to the callback function
                   */
-	    void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void * cookie = NULL);
-	    
-	    
-	    // TODO Implement callback function as a method of an instance
-	    /** \brief  Register a callback function for keyboard input
-		  * \param[in] callback function that will be registered as a callback for a keyboard event
-		  * \param[in] instance the instance that the callback function belongs to
-		  * \param[in] cookie for passing user data to callback
-		  */
-// 	    template<typename T> inline void registerKeyboardCallback(void (T::*callback)(const cv::KeyboardEvent&, void*), T& instance, void* cookie = NULL)
-// 	    { 
-// 		registerKeyboardCallback(callback, cookie);
-// 		// Set the instance for calling the callback
-// 		keyboard_callback_instance_ = (void *) &instance; 
-// 		
-// 	    }
+	    void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void * cookie = 0);
 	    
             /** \brief Save the current rendered image to disk, as a PNG screenshot.
                   * \param[in] file the name of the PNG file
@@ -127,9 +111,6 @@ namespace temp_viz
             /** \brief Internal window to image filter. Needed by \a snapshot_writer_. */
             vtkSmartPointer<vtkWindowToImageFilter> wif_;
 
-            boost::signals2::signal<void (const cv::MouseEvent&)> mouse_signal_;
-            boost::signals2::signal<void (const cv::KeyboardEvent&)> keyboard_signal_;
-
             /** \brief Interactor style internal method. Gets called whenever a key is pressed. */
             virtual void OnChar ();
 
@@ -161,9 +142,14 @@ namespace temp_viz
             /** \brief The keyboard modifier to use. Default: Alt. */
             KeyboardModifier modifier_;
 	    
-	    /** \brief Keyboard-Callback function */
+	    /** \brief KeyboardEvent callback function pointer*/
 	    void (*keyboardCallback_)(const cv::KeyboardEvent&, void*);
+	    /** \brief KeyboardEvent callback user data*/
 	    void *keyboard_callback_cookie_;
-	    void *keyboard_callback_instance_;
+	    
+	    /** \brief MouseEvent callback function pointer */
+	    void (*mouseCallback_)(const cv::MouseEvent&, void*);
+	    /** \brief MouseEvent callback user data */
+	    void *mouse_callback_cookie_;
         };
 }
diff --git a/modules/viz/src/q/viz3d_impl.hpp b/modules/viz/src/q/viz3d_impl.hpp
index a6e3de5944..5e72280a57 100644
--- a/modules/viz/src/q/viz3d_impl.hpp
+++ b/modules/viz/src/q/viz3d_impl.hpp
@@ -27,53 +27,13 @@ public:
 	  * \param[in] callback function that will be registered as a callback for a keyboard event
 	  * \param[in] cookie for passing user data to callback
 	  */	
-    void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = NULL);
+    void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = 0);
     
-    // TODO Implement callback function as a method of an instance
-    /** \brief  Register a callback function for keyboard input
-	  * \param[in] callback function that will be registered as a callback for a keyboard event
-	  * \param[in] instance the instance that the callback function belongs to
-	  * \param[in] cookie for passing user data to callback
-	  */
-    
-//     template<typename T> inline void registerKeyboardCallback(void (T::*callback)(const cv::KeyboardEvent&, void*), T& instance, void* cookie = NULL)
-//     {  }
-
-
-
-//     /** \brief Register a callback boost::function for keyboard events
-//           * \param[in] cb a boost function that will be registered as a callback for a keyboard event
-//           * \return a connection object that allows to disconnect the callback function.
-//           */
-//     void registerKeyboardCallback (boost::function<void (const cv::KeyboardEvent&)> cb);
-//     inline boost::signals2::connection registerKeyboardCallback (void (*callback) (const cv::KeyboardEvent&, void*), void* cookie = NULL)
-//     { return (registerKeyboardCallback (boost::bind (callback, _1, cookie))); }
-// 
-//     /** \brief Register a callback function for keyboard events
-//           * \param[in] callback  the member function that will be registered as a callback for a keyboard event
-//           * \param[in] instance  instance to the class that implements the callback function
-//           * \param[in] cookie    user data that is passed to the callback
-//           * \return a connection object that allows to disconnect the callback function.
-//           */
-//     template<typename T> inline boost::signals2::connection registerKeyboardCallback (void (T::*callback) (const cv::KeyboardEvent&, void*), T& instance, void* cookie = NULL)
-//     { return (registerKeyboardCallback (boost::bind (callback,  boost::ref (instance), _1, cookie))); }
-
-    /** \brief Register a callback function for mouse events
-          * \param[in] cb a boost function that will be registered as a callback for a mouse event
-          * \return a connection object that allows to disconnect the callback function.
-          */
-    boost::signals2::connection registerMouseCallback (boost::function<void (const cv::MouseEvent&)> cb);
-    inline boost::signals2::connection registerMouseCallback (void (*callback) (const cv::MouseEvent&, void*), void* cookie = NULL)
-    { return (registerMouseCallback (boost::bind (callback, _1, cookie))); }
-
     /** \brief Register a callback function for mouse events
-          * \param[in] callback  the member function that will be registered as a callback for a mouse event
-          * \param[in] instance  instance to the class that implements the callback function
-          * \param[in] cookie    user data that is passed to the callback
-          * \return a connection object that allows to disconnect the callback function.
+          * \param[in] ccallback function that will be registered as a callback for a mouse event
+          * \param[in] cookie for passing user data to callback
           */
-    template<typename T> inline boost::signals2::connection registerMouseCallback (void (T::*callback) (const cv::MouseEvent&, void*), T& instance, void* cookie = NULL)
-    { return (registerMouseCallback (boost::bind (callback, boost::ref (instance), _1, cookie))); }
+    void registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie = 0);
 
     void spin ();
     void spinOnce (int time = 1, bool force_redraw = false);
diff --git a/modules/viz/src/viz3d.cpp b/modules/viz/src/viz3d.cpp
index ed219f48c6..974013d2fd 100644
--- a/modules/viz/src/viz3d.cpp
+++ b/modules/viz/src/viz3d.cpp
@@ -96,4 +96,9 @@ bool temp_viz::Viz3d::removeCoordinateSystem (const String &id)
 void temp_viz::Viz3d::registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie)
 {
     impl_->registerKeyboardCallback(callback, cookie);
+}
+
+void temp_viz::Viz3d::registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie)
+{
+    impl_->registerMouseCallback(callback, cookie);
 }
\ No newline at end of file
diff --git a/modules/viz/src/viz_main.cpp b/modules/viz/src/viz_main.cpp
index a64d62f9d8..1ea8368af9 100644
--- a/modules/viz/src/viz_main.cpp
+++ b/modules/viz/src/viz_main.cpp
@@ -95,9 +95,10 @@ temp_viz::Viz3d::VizImpl::~VizImpl ()
 void temp_viz::Viz3d::VizImpl::saveScreenshot (const std::string &file) { style_->saveScreenshot (file); }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
-boost::signals2::connection temp_viz::Viz3d::VizImpl::registerMouseCallback (boost::function<void (const cv::MouseEvent&)> callback)
+void temp_viz::Viz3d::VizImpl::registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie)
 {
-    return (style_->registerMouseCallback (callback));
+    // Register the callback function in the interactor style
+    style_->registerMouseCallback(callback, cookie);
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////