diff --git a/alib2algo/src/measurements/MeasurementEngine.cpp b/alib2algo/src/measurements/MeasurementEngine.cpp
index fbbfe7eca1bfbf6ef0d8105466872f2ba1e6ff08..91ad5d18fbc0f8a5d224c772051a653f98f8d960 100644
--- a/alib2algo/src/measurements/MeasurementEngine.cpp
+++ b/alib2algo/src/measurements/MeasurementEngine.cpp
@@ -48,7 +48,8 @@ MeasurementResults MeasurementEngine::get_results ( ) const {
 	return MeasurementResults ( frames );
 }
 
-void MeasurementEngine::memory_hint ( MemoryHint mh ) {
+template < >
+void MeasurementEngine::hint ( MemoryHint mh ) {
 	if ( ( frame_idx_stack.size ( ) == 0 ) || ( frames[frame_idx_stack.back ( )].type == measurements::Type::ROOT ) ) return;
 
 	MemoryDataFrame::hint ( frame_idx_stack.back ( ), frames, std::move ( mh ) );
diff --git a/alib2algo/src/measurements/MeasurementEngine.hpp b/alib2algo/src/measurements/MeasurementEngine.hpp
index f0f75c6748fe8cac2efb11e9056754147c4f7c4b..b56641db678eec8dd28141829bed4a567ae4e132 100644
--- a/alib2algo/src/measurements/MeasurementEngine.hpp
+++ b/alib2algo/src/measurements/MeasurementEngine.hpp
@@ -23,7 +23,8 @@ public:
 	void reset_measurements ( );
 	MeasurementResults get_results ( ) const;
 
-	void memory_hint ( MemoryHint );
+	template < typename Hint >
+	void hint ( Hint );
 
 	static MeasurementEngine INSTANCE;
 };
diff --git a/alib2algo/src/measurements/MeasurementNew.cpp b/alib2algo/src/measurements/MeasurementNew.cpp
index 4be528a7e721a272a6693127086587a5b69093b3..b2d53fbc5bc23704a0901c7feafc6797ad5f07ea 100644
--- a/alib2algo/src/measurements/MeasurementNew.cpp
+++ b/alib2algo/src/measurements/MeasurementNew.cpp
@@ -22,7 +22,7 @@ void * operator new( std::size_t n, bool measure ) {
 
 			 // send it to the engine if it does not come from stealth allocation
 			if ( measure )
-				measurements::memory_hint ( { measurements::MemoryHint::Type::NEW, n } );
+				measurements::hint ( measurements::MemoryHint { measurements::MemoryHint::Type::NEW, n } );
 
 			return static_cast < void * > ( sptr );
 		}
@@ -48,7 +48,7 @@ void operator delete( void * ptr, bool measure ) noexcept {
 
 	 // read the block size and send it to the engine if it does not come from stealth allocation
 	if ( measure )
-		measurements::memory_hint ( { measurements::MemoryHint::Type::DELETE, * sptr } );
+		measurements::hint ( measurements::MemoryHint { measurements::MemoryHint::Type::DELETE, * sptr } );
 
 	std::free ( sptr );
 }
diff --git a/alib2algo/src/measurements/measurements.hpp b/alib2algo/src/measurements/measurements.hpp
index ecdf40ad3c1d17be0fd6b09c6f36ea92489c428f..f3bf7f2a6dc957810a2e06d1e7d695a847701300 100644
--- a/alib2algo/src/measurements/measurements.hpp
+++ b/alib2algo/src/measurements/measurements.hpp
@@ -25,8 +25,9 @@ MeasurementResults results ( ) {
 	return MeasurementEngine::INSTANCE.get_results ( );
 }
 
-void memory_hint ( MemoryHint mh ) {
-	MeasurementEngine::INSTANCE.memory_hint ( std::move ( mh ) );
+template < typename Hint >
+void hint ( Hint hint ) {
+	MeasurementEngine::INSTANCE.hint ( std::move ( hint ) );
 }
 
 }