Version 1.5.1 or higher - refacoring (mainly using the C++11 improvements)