diff --git a/modules/contrib/include/opencv2/contrib/detection_based_tracker.hpp b/modules/contrib/include/opencv2/contrib/detection_based_tracker.hpp
index c290318035f4f2af330fb5248dbf00c4846942f0..332a8290dc3d0c1eec972f24d38dca6b4038fe4f 100644
--- a/modules/contrib/include/opencv2/contrib/detection_based_tracker.hpp
+++ b/modules/contrib/include/opencv2/contrib/detection_based_tracker.hpp
@@ -7,6 +7,8 @@
 
 #include <vector>
 
+namespace cv
+{
 class DetectionBasedTracker
 {
     public:
@@ -167,10 +169,5 @@ class DetectionBasedTracker
         cv::Rect calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const;
         void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector<cv::Rect>& detectedObjectsInRegions);
 };
-
-namespace cv
-{
-    typedef ::DetectionBasedTracker DetectionBasedTracker;
-    
 } //end of cv namespace
 #endif
diff --git a/modules/contrib/src/detection_based_tracker.cpp b/modules/contrib/src/detection_based_tracker.cpp
index 28606d5becb14cce2640e16c563d3e0f03d49a2a..238ac5c3e94cc39c8859a0050f43b8e4db76c9dc 100644
--- a/modules/contrib/src/detection_based_tracker.cpp
+++ b/modules/contrib/src/detection_based_tracker.cpp
@@ -60,12 +60,15 @@ static inline cv::Rect scale_rect(const cv::Rect& r, float scale)
     return cv::Rect(x, y, cvRound(width), cvRound(height));
 }
 
-void* workcycleObjectDetectorFunction(void* p);
+namespace cv
+{
+    void* workcycleObjectDetectorFunction(void* p);
+}
 
-class DetectionBasedTracker::SeparateDetectionWork
+class cv::DetectionBasedTracker::SeparateDetectionWork
 {
     public:
-        SeparateDetectionWork(DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector);
+        SeparateDetectionWork(cv::DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector);
         virtual ~SeparateDetectionWork();
         bool communicateWithDetectingThread(const Mat& imageGray, vector<Rect>& rectsWhereRegions);
         bool run();
@@ -116,7 +119,7 @@ class DetectionBasedTracker::SeparateDetectionWork
         long long  timeWhenDetectingThreadStartedWork;
 };
 
-DetectionBasedTracker::SeparateDetectionWork::SeparateDetectionWork(DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector)
+cv::DetectionBasedTracker::SeparateDetectionWork::SeparateDetectionWork(DetectionBasedTracker& _detectionBasedTracker, cv::Ptr<DetectionBasedTracker::IDetector> _detector)
     :detectionBasedTracker(_detectionBasedTracker),
     cascadeInThread(),
     isObjectDetectingReady(false),
@@ -149,7 +152,7 @@ DetectionBasedTracker::SeparateDetectionWork::SeparateDetectionWork(DetectionBas
     }
 }
 
-DetectionBasedTracker::SeparateDetectionWork::~SeparateDetectionWork()
+cv::DetectionBasedTracker::SeparateDetectionWork::~SeparateDetectionWork()
 {
     if(stateThread!=STATE_THREAD_STOPPED) {
         LOGE("\n\n\nATTENTION!!! dangerous algorithm error: destructor DetectionBasedTracker::DetectionBasedTracker::~SeparateDetectionWork is called before stopping the workthread");
@@ -159,7 +162,7 @@ DetectionBasedTracker::SeparateDetectionWork::~SeparateDetectionWork()
     pthread_cond_destroy(&objectDetectorRun);
     pthread_mutex_destroy(&mutex);
 }
-bool DetectionBasedTracker::SeparateDetectionWork::run()
+bool cv::DetectionBasedTracker::SeparateDetectionWork::run()
 {
     LOGD("DetectionBasedTracker::SeparateDetectionWork::run() --- start");
     pthread_mutex_lock(&mutex);
@@ -208,18 +211,18 @@ do {
 } while(0)
 #endif
 
-void* workcycleObjectDetectorFunction(void* p)
+void* cv::workcycleObjectDetectorFunction(void* p)
 {
-    CATCH_ALL_AND_LOG({ ((DetectionBasedTracker::SeparateDetectionWork*)p)->workcycleObjectDetector(); });
+    CATCH_ALL_AND_LOG({ ((cv::DetectionBasedTracker::SeparateDetectionWork*)p)->workcycleObjectDetector(); });
     try{
-        ((DetectionBasedTracker::SeparateDetectionWork*)p)->stateThread = DetectionBasedTracker::SeparateDetectionWork::STATE_THREAD_STOPPED;
+        ((cv::DetectionBasedTracker::SeparateDetectionWork*)p)->stateThread = cv::DetectionBasedTracker::SeparateDetectionWork::STATE_THREAD_STOPPED;
     } catch(...) {
         LOGE0("DetectionBasedTracker: workcycleObjectDetectorFunction: ERROR concerning pointer, received as the function parameter");
     }
     return NULL;
 }
 
-void DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector()
+void cv::DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector()
 {
     static double freq = getTickFrequency();
     LOGD("DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector() --- start");
@@ -343,7 +346,7 @@ void DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector()
     LOGI("DetectionBasedTracker::SeparateDetectionWork::workcycleObjectDetector: Returning");
 }
 
-void DetectionBasedTracker::SeparateDetectionWork::stop()
+void cv::DetectionBasedTracker::SeparateDetectionWork::stop()
 {
     //FIXME: TODO: should add quickStop functionality
     pthread_mutex_lock(&mutex);
@@ -360,7 +363,7 @@ void DetectionBasedTracker::SeparateDetectionWork::stop()
     pthread_mutex_unlock(&mutex);
 }
 
-void DetectionBasedTracker::SeparateDetectionWork::resetTracking()
+void cv::DetectionBasedTracker::SeparateDetectionWork::resetTracking()
 {
     LOGD("DetectionBasedTracker::SeparateDetectionWork::resetTracking");
     pthread_mutex_lock(&mutex);
@@ -381,7 +384,7 @@ void DetectionBasedTracker::SeparateDetectionWork::resetTracking()
 
 }
 
-bool DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThread(const Mat& imageGray, vector<Rect>& rectsWhereRegions)
+bool cv::DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThread(const Mat& imageGray, vector<Rect>& rectsWhereRegions)
 {
     static double freq = getTickFrequency();
 
@@ -431,13 +434,13 @@ bool DetectionBasedTracker::SeparateDetectionWork::communicateWithDetectingThrea
     return shouldHandleResult;
 }
 
-DetectionBasedTracker::Parameters::Parameters()
+cv::DetectionBasedTracker::Parameters::Parameters()
 {
     maxTrackLifetime=5;
     minDetectionPeriod=0;
 }
 
-DetectionBasedTracker::InnerParameters::InnerParameters()
+cv::DetectionBasedTracker::InnerParameters::InnerParameters()
 {
     numLastPositionsToTrack=4;
     numStepsToWaitBeforeFirstShow=6;
@@ -450,7 +453,7 @@ DetectionBasedTracker::InnerParameters::InnerParameters()
 
 }
 
-DetectionBasedTracker::DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv::Ptr<IDetector> trackingDetector, const Parameters& params)
+cv::DetectionBasedTracker::DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv::Ptr<IDetector> trackingDetector, const Parameters& params)
     :separateDetectionWork(),
     parameters(params),
     innerParameters(),
@@ -471,7 +474,7 @@ DetectionBasedTracker::DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv
     weightsSizesSmoothing.push_back(0.2);
 }
 
-DetectionBasedTracker::~DetectionBasedTracker()
+cv::DetectionBasedTracker::~DetectionBasedTracker()
 {
 }
 
@@ -544,7 +547,7 @@ void DetectionBasedTracker::process(const Mat& imageGray)
     updateTrackedObjects(detectedObjectsInRegions);
 }
 
-void DetectionBasedTracker::getObjects(std::vector<cv::Rect>& result) const
+void cv::DetectionBasedTracker::getObjects(std::vector<cv::Rect>& result) const
 {
     result.clear();
 
@@ -558,7 +561,7 @@ void DetectionBasedTracker::getObjects(std::vector<cv::Rect>& result) const
     }
 }
 
-void DetectionBasedTracker::getObjects(std::vector<Object>& result) const
+void cv::DetectionBasedTracker::getObjects(std::vector<Object>& result) const
 {
     result.clear();
 
@@ -571,7 +574,7 @@ void DetectionBasedTracker::getObjects(std::vector<Object>& result) const
         LOGD("DetectionBasedTracker::process: found a object with SIZE %d x %d, rect={%d, %d, %d x %d}", r.width, r.height, r.x, r.y, r.width, r.height);
     }
 }
-void DetectionBasedTracker::getObjects(std::vector<ExtObject>& result) const
+void cv::DetectionBasedTracker::getObjects(std::vector<ExtObject>& result) const
 {
     result.clear();
 
@@ -583,7 +586,7 @@ void DetectionBasedTracker::getObjects(std::vector<ExtObject>& result) const
     }
 }
 
-bool DetectionBasedTracker::run()
+bool cv::DetectionBasedTracker::run()
 {
     if (!separateDetectionWork.empty()) {
         return separateDetectionWork->run();
@@ -591,14 +594,14 @@ bool DetectionBasedTracker::run()
     return false;
 }
 
-void DetectionBasedTracker::stop()
+void cv::DetectionBasedTracker::stop()
 {
     if (!separateDetectionWork.empty()) {
         separateDetectionWork->stop();
     }
 }
 
-void DetectionBasedTracker::resetTracking()
+void cv::DetectionBasedTracker::resetTracking()
 {
     if (!separateDetectionWork.empty()) {
         separateDetectionWork->resetTracking();
@@ -606,7 +609,7 @@ void DetectionBasedTracker::resetTracking()
     trackedObjects.clear();
 }
 
-void DetectionBasedTracker::updateTrackedObjects(const vector<Rect>& detectedObjects)
+void cv::DetectionBasedTracker::updateTrackedObjects(const vector<Rect>& detectedObjects)
 {
     enum {
         NEW_RECTANGLE=-1,
@@ -727,7 +730,7 @@ void DetectionBasedTracker::updateTrackedObjects(const vector<Rect>& detectedObj
     }
 }
 
-int DetectionBasedTracker::addObject(const Rect& location)
+int cv::DetectionBasedTracker::addObject(const Rect& location)
 {
     LOGD("DetectionBasedTracker::addObject: new object {%d, %d %dx%d}",location.x, location.y, location.width, location.height);
     trackedObjects.push_back(TrackedObject(location));
@@ -736,12 +739,12 @@ int DetectionBasedTracker::addObject(const Rect& location)
     return newId;
 }
 
-Rect DetectionBasedTracker::calcTrackedObjectPositionToShow(int i) const
+Rect cv::DetectionBasedTracker::calcTrackedObjectPositionToShow(int i) const
 {
     ObjectStatus status;
     return calcTrackedObjectPositionToShow(i, status);
 }
-Rect DetectionBasedTracker::calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const
+Rect cv::DetectionBasedTracker::calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const
 {
     if ( (i < 0) || (i >= (int)trackedObjects.size()) ) {
         LOGE("DetectionBasedTracker::calcTrackedObjectPositionToShow: ERROR: wrong i=%d", i);
@@ -827,7 +830,7 @@ Rect DetectionBasedTracker::calcTrackedObjectPositionToShow(int i, ObjectStatus&
     return res;
 }
 
-void DetectionBasedTracker::detectInRegion(const Mat& img, const Rect& r, vector<Rect>& detectedObjectsInRegions)
+void cv::DetectionBasedTracker::detectInRegion(const Mat& img, const Rect& r, vector<Rect>& detectedObjectsInRegions)
 {
     Rect r0(Point(), img.size());
     Rect r1 = scale_rect(r, innerParameters.coeffTrackingWindowSize);
@@ -864,7 +867,7 @@ void DetectionBasedTracker::detectInRegion(const Mat& img, const Rect& r, vector
     }
 }
 
-bool DetectionBasedTracker::setParameters(const Parameters& params)
+bool cv::DetectionBasedTracker::setParameters(const Parameters& params)
 {
     if ( params.maxTrackLifetime < 0 )
     {
@@ -882,7 +885,7 @@ bool DetectionBasedTracker::setParameters(const Parameters& params)
     return true;
 }
 
-const DetectionBasedTracker::Parameters& DetectionBasedTracker::getParameters() const
+const cv::DetectionBasedTracker::Parameters& DetectionBasedTracker::getParameters() const
 {
     return parameters;
 }
diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp
index 17bc065f16e30b318355aba11f922acc94948d29..5ba8a638909416081f9c8ba41e33b09095f6c585 100644
--- a/modules/core/include/opencv2/core/core.hpp
+++ b/modules/core/include/opencv2/core/core.hpp
@@ -2139,15 +2139,11 @@ CV_EXPORTS_W void reduce(InputArray src, OutputArray dst, int dim, int rtype, in
 
 //! makes multi-channel array out of several single-channel arrays
 CV_EXPORTS void merge(const Mat* mv, size_t count, OutputArray dst);
-CV_EXPORTS void merge(const vector<Mat>& mv, OutputArray dst );
-
 //! makes multi-channel array out of several single-channel arrays
 CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst);
 
 //! copies each plane of a multi-channel array to a dedicated array
 CV_EXPORTS void split(const Mat& src, Mat* mvbegin);
-CV_EXPORTS void split(const Mat& src, vector<Mat>& mv );
-    
 //! copies each plane of a multi-channel array to a dedicated array
 CV_EXPORTS_W void split(InputArray m, OutputArrayOfArrays mv);
 
@@ -2566,7 +2562,7 @@ CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts,
                            Point offset=Point() );
 
 //! draws one or more polygonal curves
-CV_EXPORTS void polylines(Mat& img, const Point** pts, const int* npts,
+CV_EXPORTS void polylines(Mat& img, const Point* const* pts, const int* npts,
                           int ncontours, bool isClosed, const Scalar& color,
                           int thickness=1, int lineType=8, int shift=0 );
 
@@ -4014,7 +4010,7 @@ public:
     //! closes the file and releases all the memory buffers
     CV_WRAP virtual void release();
     //! closes the file, releases all the memory buffers and returns the text string
-    CV_WRAP string releaseAndGetString();
+    CV_WRAP virtual string releaseAndGetString();
 
     //! returns the first element of the top-level mapping
     CV_WRAP FileNode getFirstTopLevelNode() const;
@@ -4557,7 +4553,6 @@ template<> struct ParamType<uint64>
 class CV_EXPORTS CommandLineParser
 {
 public:
-    CommandLineParser(int argc, const char* const argv[], const char* keys);
     CommandLineParser(int argc, const char* const argv[], const string& keys);
     CommandLineParser(const CommandLineParser& parser);
     CommandLineParser& operator = (const CommandLineParser& parser);
@@ -4579,18 +4574,17 @@ public:
         getByIndex(index, space_delete, ParamType<T>::type, (void*)&val);
         return val;
     }
-    
-    bool has(const string& name);
+
+    bool has(const string& name) const;
+
     bool check() const;
 
     void about(const string& message);
 
     void printMessage() const;
     void printErrors() const;
-    void printParams();
 
 protected:
-    string getString(const string& name);
     void getByName(const string& name, bool space_delete, int type, void* dst) const;
     void getByIndex(int index, bool space_delete, int type, void* dst) const;
 
diff --git a/modules/core/include/opencv2/core/opengl_interop.hpp b/modules/core/include/opencv2/core/opengl_interop.hpp
index d680d82979e4a5c2ae2ed9330c4a0d255539891d..c039a1f315ac15c4aa7ddd7b9775bbc9bc5d361a 100644
--- a/modules/core/include/opencv2/core/opengl_interop.hpp
+++ b/modules/core/include/opencv2/core/opengl_interop.hpp
@@ -221,7 +221,7 @@ public:
 
     static Ptr<GlFont> get(const std::string& family, int height = 12, Weight weight = WEIGHT_NORMAL, Style style = STYLE_NORMAL);
 
-    void draw(const char* str, int len) const;
+    void draw(const char* str, size_t len) const;
 
     inline const std::string& family() const { return family_; }
     inline int height() const { return height_; }
diff --git a/modules/core/src/command_line_parser.cpp b/modules/core/src/command_line_parser.cpp
index b83a89902791e62f7148c1abdd00de30206d533f..840bf8162a5cf6e8d66cb312275fe50241bb10e0 100644
--- a/modules/core/src/command_line_parser.cpp
+++ b/modules/core/src/command_line_parser.cpp
@@ -27,12 +27,9 @@ struct CommandLineParser::Impl
     
     vector<CommandLineParserParams> data;
     
-    Impl() { refcount = 1; }
-    Impl(int argc, const char* const argv[], const char* keys);
-    
     vector<string> split_range_string(const string& str, char fs, char ss) const;
     vector<string> split_string(const string& str, char symbol = ' ', bool create_empty_item = false) const;
-    string trim_spaces(const string& str) const;
+    string cat_string(const string& str) const;
     
     void apply_params(const string& key, const string& value);
     void apply_params(int i, string value);
@@ -86,39 +83,26 @@ static void from_str(const string& str, int type, void* dst)
     }
 }
 
-string CommandLineParser::getString(const string& name)
-{
-    for (size_t i = 0; i < impl->data.size(); i++)
-    {
-        for (size_t j = 0; j < impl->data[i].keys.size(); j++)
-        {
-            if (name.compare(impl->data[i].keys[j]) == 0)
-            {
-                string v = impl->data[i].def_value;
-                return v;
-            }
-        }
-    }
-    return string();
-}
-    
 void CommandLineParser::getByName(const string& name, bool space_delete, int type, void* dst) const
 {
     try
     {
-        string v = ((CommandLineParser*)this)->getString(name);
-        if( v.empty() )
-        {
-            impl->error = true;
-            impl->error_message += "Unknown parametes " + name + "\n";
-        }
-        else
+        for (size_t i = 0; i < impl->data.size(); i++)
         {
-            if (space_delete)
-                v = impl->trim_spaces(v);
-            from_str(v, type, dst);
-            return;
+            for (size_t j = 0; j < impl->data[i].keys.size(); j++)
+            {
+                if (name.compare(impl->data[i].keys[j]) == 0)
+                {
+                    string v = impl->data[i].def_value;
+                    if (space_delete)
+                        v = impl->cat_string(v);
+                    from_str(v, type, dst);
+                    return;
+                }
+            }
         }
+        impl->error = true;
+        impl->error_message += "Unknown parametes " + name + "\n";
     }
     catch (std::exception& e)
     {
@@ -137,7 +121,7 @@ void CommandLineParser::getByIndex(int index, bool space_delete, int type, void*
             if (impl->data[i].number == index)
             {
                 string v = impl->data[i].def_value;
-                if (space_delete == true) v = impl->trim_spaces(v);
+                if (space_delete == true) v = impl->cat_string(v);
                 from_str(v, type, dst);
                 return;
             }
@@ -170,45 +154,36 @@ static bool cmp_params(const CommandLineParserParams & p1, const CommandLinePars
 
 CommandLineParser::CommandLineParser(int argc, const char* const argv[], const string& keys)
 {
-    impl = new Impl(argc, argv, keys.c_str());
-}
-
-CommandLineParser::CommandLineParser(int argc, const char* const argv[], const char* keys)
-{
-    impl = new Impl(argc, argv, keys);
-}
-    
-CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* keys)
-{
-    refcount = 1;
+    impl = new Impl;
+    impl->refcount = 1;
     
     // path to application
     size_t pos_s = string(argv[0]).find_last_of("/\\");
     if (pos_s == string::npos)
     {
-        path_to_app = "";
-        app_name = string(argv[0]);
+        impl->path_to_app = "";
+        impl->app_name = string(argv[0]);
     }
     else
     {
-        path_to_app = string(argv[0]).substr(0, pos_s);
-        app_name = string(argv[0]).substr(pos_s + 1, string(argv[0]).length() - pos_s);
+        impl->path_to_app = string(argv[0]).substr(0, pos_s);
+        impl->app_name = string(argv[0]).substr(pos_s + 1, string(argv[0]).length() - pos_s);
     }
 
-    error = false;
-    error_message = "";
+    impl->error = false;
+    impl->error_message = "";
 
     // parse keys
-    vector<string> k = split_range_string(keys, '{', '}');
+    vector<string> k = impl->split_range_string(keys, '{', '}');
 
     int jj = 0;
     for (size_t i = 0; i < k.size(); i++)
     {
-        vector<string> l = split_string(k[i], '|', true);
+        vector<string> l = impl->split_string(k[i], '|', true);
         CommandLineParserParams p;
-        p.keys = split_string(l[0]);
+        p.keys = impl->split_string(l[0]);
         p.def_value = l[1];
-        p.help_message = trim_spaces(l[2]);
+        p.help_message = impl->cat_string(l[2]);
         p.number = -1;
         if (p.keys[0][0] == '@')
         {
@@ -216,7 +191,7 @@ CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* ke
             jj++;
         }
 
-        data.push_back(p);
+        impl->data.push_back(p);
     }
 
     // parse argv
@@ -227,13 +202,13 @@ CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* ke
 
         if (s.find('=') != string::npos && s.find('=') < s.length())
         {
-            vector<string> k_v = split_string(s, '=', true);
+            vector<string> k_v = impl->split_string(s, '=', true);
             for (int h = 0; h < 2; h++)
             {
                 if (k_v[0][0] == '-')
                     k_v[0] = k_v[0].substr(1, k_v[0].length() -1);
             }
-            apply_params(k_v[0], k_v[1]);
+            impl->apply_params(k_v[0], k_v[1]);
         }
         else if (s.length() > 1 && s[0] == '-')
         {
@@ -242,16 +217,16 @@ CommandLineParser::Impl::Impl(int argc, const char* const argv[], const char* ke
                 if (s[0] == '-')
                     s = s.substr(1, s.length() - 1);
             }
-            apply_params(s, "true");
+            impl->apply_params(s, "true");
         }
         else if (s[0] != '-')
         {
-            apply_params(jj, s);
+            impl->apply_params(jj, s);
             jj++;
         }
     }
 
-    sort_params();
+    impl->sort_params();
 }
     
     
@@ -315,7 +290,7 @@ void CommandLineParser::Impl::sort_params()
     sort (data.begin(), data.end(), cmp_params);
 }
 
-string CommandLineParser::Impl::trim_spaces(const string& str) const
+string CommandLineParser::Impl::cat_string(const string& str) const
 {
     int left = 0, right = (int)str.length();
     while( left <= right && str[left] == ' ' )
@@ -330,7 +305,7 @@ string CommandLineParser::getPathToApplication() const
     return impl->path_to_app;
 }
 
-bool CommandLineParser::has(const string& name)
+bool CommandLineParser::has(const string& name) const
 {
     for (size_t i = 0; i < impl->data.size(); i++)
     {
@@ -358,11 +333,6 @@ void CommandLineParser::printErrors() const
     }
 }
 
-void CommandLineParser::printParams()
-{
-    printMessage();
-}
-    
 void CommandLineParser::printMessage() const
 {
     if (impl->about_message != "")
@@ -404,7 +374,7 @@ void CommandLineParser::printMessage() const
                     std::cout << ", ";
                 }
             }
-            string dv = impl->trim_spaces(impl->data[i].def_value);
+            string dv = impl->cat_string(impl->data[i].def_value);
             if (dv.compare("") != 0)
             {
                 std::cout << " (value:" << dv << ")";
@@ -424,7 +394,7 @@ void CommandLineParser::printMessage() const
 
             std::cout << k;
 
-            string dv = impl->trim_spaces(impl->data[i].def_value);
+            string dv = impl->cat_string(impl->data[i].def_value);
             if (dv.compare("") != 0)
             {
                 std::cout << " (value:" << dv << ")";
diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp
index 4cbbf9daef3edbc4d6ced79781781b161cf0b5ae..1f6a85d8762e82f6e130dd6b9854926c3b8752e6 100644
--- a/modules/core/src/convert.cpp
+++ b/modules/core/src/convert.cpp
@@ -267,11 +267,6 @@ void cv::split(InputArray _m, OutputArrayOfArrays _mv)
     split(m, dst);
 }
 
-void cv::split(const Mat& src, vector<Mat>& mv)
-{
-    split(_InputArray(src), _OutputArray(mv));
-}
-
 void cv::merge(const Mat* mv, size_t n, OutputArray _dst)
 {
     CV_Assert( mv && n > 0 );
@@ -354,11 +349,6 @@ void cv::merge(InputArrayOfArrays _mv, OutputArray _dst)
     merge(!mv.empty() ? &mv[0] : 0, mv.size(), _dst);
 }
 
-void cv::merge(const vector<Mat>& _mv, OutputArray _dst)
-{
-    merge(_InputArray(_mv), _dst);
-}
-
 /****************************************************************************************\
 *                       Generalized split/merge: mixing channels                         *
 \****************************************************************************************/
diff --git a/modules/core/src/drawing.cpp b/modules/core/src/drawing.cpp
index c48b04801ad4af94df45dc0653ef281c81236007..50e51fb334021adb28a6cd76efd274dc8f5e4973 100644
--- a/modules/core/src/drawing.cpp
+++ b/modules/core/src/drawing.cpp
@@ -1730,7 +1730,7 @@ void fillPoly( Mat& img, const Point** pts, const int* npts, int ncontours,
 }
 
 
-void polylines( Mat& img, const Point** pts, const int* npts, int ncontours, bool isClosed,
+void polylines( Mat& img, const Point* const* pts, const int* npts, int ncontours, bool isClosed,
                 const Scalar& color, int thickness, int line_type, int shift )
 {
     if( line_type == CV_AA && img.depth() != CV_8U )
diff --git a/modules/core/src/opengl_interop.cpp b/modules/core/src/opengl_interop.cpp
index d01cfc83c45ea2cd62b212133541512f82289017..a549366752a3532017b5e0f925eb4b21cc44030f 100644
--- a/modules/core/src/opengl_interop.cpp
+++ b/modules/core/src/opengl_interop.cpp
@@ -1257,7 +1257,7 @@ cv::GlFont::GlFont(const string& _family, int _height, Weight _weight, Style _st
 #endif
 }
 
-void cv::GlFont::draw(const char* str, int len) const
+void cv::GlFont::draw(const char* str, size_t len) const
 {
 #ifndef HAVE_OPENGL
     (void)str;
@@ -1409,7 +1409,7 @@ void cv::render(const string& str, const Ptr<GlFont>& font, Scalar color, Point2
 
     glRasterPos2d(2.0 * (viewport[0] + pos.x) / viewport[2] - 1.0, 1.0 - 2.0 * (viewport[1] + pos.y + font->height()) / viewport[3]);
 
-    font->draw(str.c_str(), (int)str.length());
+    font->draw(str.c_str(), str.length());
 
     glPopAttrib();
 #endif
diff --git a/modules/imgproc/include/opencv2/imgproc/imgproc.hpp b/modules/imgproc/include/opencv2/imgproc/imgproc.hpp
index 34d59e17a9ac0d593bdb386ee255711e4092ada0..63f52181407dc0456a369e6f19dc99219ee18789 100644
--- a/modules/imgproc/include/opencv2/imgproc/imgproc.hpp
+++ b/modules/imgproc/include/opencv2/imgproc/imgproc.hpp
@@ -636,10 +636,8 @@ CV_EXPORTS_W void accumulateWeighted( InputArray src, InputOutputArray dst,
 //! computes PSNR image/video quality metric
 CV_EXPORTS_W double PSNR(InputArray src1, InputArray src2);
 
-CV_EXPORTS Point2d phaseCorrelate(InputArray src1, InputArray src2,
-                                  InputArray window = noArray());
 CV_EXPORTS_W Point2d phaseCorrelate(InputArray src1, InputArray src2,
-                                    InputArray window, CV_OUT double* response CV_WRAP_DEFAULT(0));
+                                    InputArray window = noArray(), CV_OUT double* response=0);
 CV_EXPORTS_W void createHanningWindow(OutputArray dst, Size winSize, int type);
 
 //! type of the threshold operation
diff --git a/modules/imgproc/src/phasecorr.cpp b/modules/imgproc/src/phasecorr.cpp
index dd5497f8f4c817c46ce85b694996e3f0c3b94d05..3b6c2eb4ab18f20b487ccf159ff499adb84227d5 100644
--- a/modules/imgproc/src/phasecorr.cpp
+++ b/modules/imgproc/src/phasecorr.cpp
@@ -568,10 +568,6 @@ cv::Point2d cv::phaseCorrelate(InputArray _src1, InputArray _src2, InputArray _w
     return (center - t);
 }
 
-cv::Point2d cv::phaseCorrelate(InputArray _src1, InputArray _src2, InputArray _window)
-{
-    return phaseCorrelate(_src1, _src2, _window, 0);
-}
 
 void cv::createHanningWindow(OutputArray _dst, cv::Size winSize, int type)
 {
diff --git a/modules/videostab/include/opencv2/videostab/deblurring.hpp b/modules/videostab/include/opencv2/videostab/deblurring.hpp
index 2e32350530640a67cfdd0c0cc3dcfeb2ecd89468..d2ab43824b886e1e3395236c65e6ac5245efab73 100644
--- a/modules/videostab/include/opencv2/videostab/deblurring.hpp
+++ b/modules/videostab/include/opencv2/videostab/deblurring.hpp
@@ -63,6 +63,9 @@ public:
     virtual void setRadius(int val) { radius_ = val; }
     virtual int radius() const { return radius_; }
 
+    virtual void deblur(int idx, Mat &frame) = 0;
+
+
     // data from stabilizer
 
     virtual void setFrames(const std::vector<Mat> &val) { frames_ = &val; }
@@ -74,9 +77,6 @@ public:
     virtual void setBlurrinessRates(const std::vector<float> &val) { blurrinessRates_ = &val; }
     virtual const std::vector<float>& blurrinessRates() const { return *blurrinessRates_; }
 
-    virtual void update() {}
-    virtual void deblur(int idx, Mat &frame) = 0;
-
 protected:
     int radius_;
     const std::vector<Mat> *frames_;