diff --git a/alib2std/src/extensions/ptr_tuple.hpp b/alib2std/src/extensions/ptr_tuple.hpp
index 4bb5efa8856c74365579e093641a4f7d54fc9ab5..0260455c1efbc0787483c5f8a0d5433f29d69acf 100644
--- a/alib2std/src/extensions/ptr_tuple.hpp
+++ b/alib2std/src/extensions/ptr_tuple.hpp
@@ -505,20 +505,20 @@ struct tuple_element < I, ext::ptr_tuple < Types... > > {
 	typedef typename std::tuple_element < I, std::tuple < Types ... > >::type type;
 };
 
-template < class Result, unsigned I, class Callable, class ... Types >
-struct call_on_nth_helper < Result, I, ext::ptr_tuple < Types ... >, Callable > {
-	template < class Tuple >
+template < class Result, unsigned I, class ... Types >
+struct call_on_nth_helper < Result, I, ext::ptr_tuple < Types ... > > {
+	template < class Tuple, class Callable >
 	static Result call_on_nth_fn ( Tuple && t, unsigned index, Callable callback ) {
 		if ( index == 0 )
-			return callback ( std::get < ext::tuple_size < Tuple >::value - I > ( std::forward < ext::ptr_tuple < Types ... > > ( t ) ) );
+			return callback ( std::get < ext::tuple_size < Tuple >::value - I > ( std::forward < Tuple && > ( t ) ) );
 		else
-			return call_on_nth_helper < Result, I - 1, ext::ptr_tuple < Types ... >, Callable >::call_on_nth_fn ( std::forward < Tuple && > ( t ), index - 1, callback );
+			return call_on_nth_helper < Result, I - 1, ext::ptr_tuple < Types ... > >::call_on_nth_fn ( std::forward < Tuple && > ( t ), index - 1, callback );
 	}
 };
 
-template < class Result, class Callable, class ... Types >
-struct call_on_nth_helper < Result, 0, ext::ptr_tuple < Types ... >, Callable > {
-	template < class Tuple >
+template < class Result, class ... Types >
+struct call_on_nth_helper < Result, 0, ext::ptr_tuple < Types ... > > {
+	template < class Tuple, class Callable >
 	static Result call_on_nth_fn ( Tuple &&, unsigned, Callable ) {
 		throw std::out_of_range ( "Not enough elements in tuple." );
 	}
diff --git a/alib2std/src/extensions/tuple.hpp b/alib2std/src/extensions/tuple.hpp
index 1e30ced3607b0c21a5a296fc4d2dbdf9f771e9ed..77d8fca14131013d2afdf0c43243df36f14b064c 100644
--- a/alib2std/src/extensions/tuple.hpp
+++ b/alib2std/src/extensions/tuple.hpp
@@ -91,23 +91,23 @@ struct tuple_element < I, const volatile T > {
 	typedef typename std::add_cv < typename ext::tuple_element < I, T >::type >::type type;
 };
 
-template < class Result, unsigned I, class Tuple, class Callable >
+template < class Result, unsigned I, class Tuple >
 struct call_on_nth_helper;
 
-template < class Result, unsigned I, class Callable, class ... Types >
-struct call_on_nth_helper < Result, I, ext::tuple < Types ... >, Callable > {
-	template < class Tuple >
+template < class Result, unsigned I, class ... Types >
+struct call_on_nth_helper < Result, I, ext::tuple < Types ... > > {
+	template < class Tuple, class Callable >
 	static Result call_on_nth_fn ( Tuple && t, unsigned index, Callable callback ) {
 		if ( index == 0 )
 			return callback ( std::get < ext::tuple_size < Tuple >::value - I > ( std::forward < Tuple && > ( t ) ) );
 		else
-			return call_on_nth_helper < Result, I - 1, ext::tuple < Types ... >, Callable >::call_on_nth_fn ( std::forward < Tuple && > ( t ), index - 1, callback );
+			return call_on_nth_helper < Result, I - 1, ext::tuple < Types ... > >::call_on_nth_fn ( std::forward < Tuple && > ( t ), index - 1, callback );
 	}
 };
 
-template < class Result, class Callable, class ... Types >
-struct call_on_nth_helper < Result, 0, ext::tuple < Types ... >, Callable > {
-	template < class Tuple >
+template < class Result, class ... Types >
+struct call_on_nth_helper < Result, 0, ext::tuple < Types ... > > {
+	template < class Tuple, class Callable >
 	static Result call_on_nth_fn ( Tuple &&, unsigned, Callable ) {
 		throw std::out_of_range ( "Not enough elements in tuple." );
 	}
@@ -115,7 +115,7 @@ struct call_on_nth_helper < Result, 0, ext::tuple < Types ... >, Callable > {
 
 template < class Result, class Tuple, class Callable >
 Result call_on_nth ( Tuple && t, unsigned index, Callable callback ) {
-	return call_on_nth_helper < Result, ext::tuple_size < Tuple >::value, typename std::decay < Tuple >::type, Callable >::call_on_nth_fn ( std::forward < Tuple && > ( t ), index, callback );
+	return call_on_nth_helper < Result, ext::tuple_size < Tuple >::value, typename std::decay < Tuple >::type >::call_on_nth_fn ( std::forward < Tuple && > ( t ), index, callback );
 }