diff --git a/src/TNL/Containers/Algorithms/CMakeLists.txt b/src/TNL/Containers/Algorithms/CMakeLists.txt
index ea0148af125ed2c1aa9ce973b54f149ab151f892..f3ccab86d77daa7f6b4fe3fedd7e73cd769c033c 100755
--- a/src/TNL/Containers/Algorithms/CMakeLists.txt
+++ b/src/TNL/Containers/Algorithms/CMakeLists.txt
@@ -1,3 +1,5 @@
+ADD_SUBDIRECTORY( TemplateExplicitInstantiation )
+
 set( headers cuda-prefix-sum.h
              cuda-prefix-sum_impl.h
              cuda-reduction.h             
@@ -12,39 +14,4 @@ set( headers cuda-prefix-sum.h
              Multireduction_impl.h
    )
 
-SET( CURRENT_DIR ${CMAKE_SOURCE_DIR}/src/TNL/Containers/Algorithms ) 
-IF( BUILD_CUDA )
-   set( tnl_core_cuda_CUDA__SOURCES
-        ${common_SOURCES}
-        ${CURRENT_DIR}/cuda-reduction-sum_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-min_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-max_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-abs-sum_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-abs-min_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-abs-max_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-and_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-or_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-l2-norm_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-lp-norm_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-equalities_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-inequalities_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-scalar-product_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-diff-sum_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-diff-min_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-diff-max_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-diff-abs-sum_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-diff-abs-min_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-diff-abs-max_impl.cu
-        ${CURRENT_DIR}/cuda-reduction-diff-l2-norm_impl.cu        
-        ${CURRENT_DIR}/cuda-reduction-diff-lp-norm_impl.cu        
-        ${CURRENT_DIR}/cuda-prefix-sum_impl.cu
-        PARENT_SCOPE ) 
-endif() 
-
-set( tnl_core_cuda_SOURCES
-     ${common_SOURCES}
-     ${CURRENT_DIR}/cuda-reduction_impl.cpp
-     ${CURRENT_DIR}/cuda-prefix-sum_impl.cpp     
-     PARENT_SCOPE )               
-        
 INSTALL( FILES ${headers} DESTINATION include/tnl-${tnlVersion}/TNL/Containers/Algorithms )
diff --git a/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/CMakeLists.txt b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/CMakeLists.txt
new file mode 100755
index 0000000000000000000000000000000000000000..266952e328fc11a0235a8b737f612cb2ffdfa7dc
--- /dev/null
+++ b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/CMakeLists.txt
@@ -0,0 +1,33 @@
+SET( CURRENT_DIR ${CMAKE_SOURCE_DIR}/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation ) 
+IF( BUILD_CUDA )
+   set( tnl_core_cuda_CUDA__SOURCES
+        ${common_SOURCES}
+        ${CURRENT_DIR}/cuda-reduction-sum_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-min_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-max_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-abs-sum_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-abs-min_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-abs-max_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-and_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-or_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-l2-norm_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-lp-norm_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-equalities_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-inequalities_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-scalar-product_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-diff-sum_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-diff-min_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-diff-max_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-diff-abs-sum_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-diff-abs-min_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-diff-abs-max_impl.cu
+        ${CURRENT_DIR}/cuda-reduction-diff-l2-norm_impl.cu        
+        ${CURRENT_DIR}/cuda-reduction-diff-lp-norm_impl.cu        
+        ${CURRENT_DIR}/cuda-prefix-sum_impl.cu
+        PARENT_SCOPE ) 
+endif() 
+
+set( tnl_core_cuda_SOURCES
+     ${common_SOURCES}
+     ${CURRENT_DIR}/cuda-reduction_impl.cpp
+     PARENT_SCOPE )               
diff --git a/src/TNL/Containers/Algorithms/cuda-prefix-sum_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-prefix-sum_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-prefix-sum_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-prefix-sum_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-abs-max_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-abs-max_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-abs-max_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-abs-max_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-abs-min_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-abs-min_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-abs-min_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-abs-min_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-abs-sum_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-abs-sum_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-abs-sum_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-abs-sum_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-and_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-and_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-and_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-and_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-abs-max_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-abs-max_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-abs-max_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-abs-max_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-abs-min_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-abs-min_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-abs-min_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-abs-min_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-abs-sum_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-abs-sum_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-abs-sum_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-abs-sum_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-l2-norm_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-l2-norm_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-l2-norm_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-l2-norm_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-lp-norm_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-lp-norm_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-lp-norm_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-lp-norm_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-max_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-max_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-max_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-max_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-min_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-min_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-min_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-min_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-diff-sum_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-sum_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-diff-sum_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-diff-sum_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-equalities_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-equalities_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-equalities_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-equalities_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-inequalities_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-inequalities_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-inequalities_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-inequalities_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-l2-norm_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-l2-norm_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-l2-norm_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-l2-norm_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-lp-norm_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-lp-norm_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-lp-norm_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-lp-norm_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-max_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-max_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-max_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-max_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-min_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-min_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-min_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-min_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-or_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-or_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-or_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-or_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-scalar-product_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-scalar-product_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-scalar-product_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-scalar-product_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction-sum_impl.cu b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-sum_impl.cu
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction-sum_impl.cu
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction-sum_impl.cu
diff --git a/src/TNL/Containers/Algorithms/cuda-reduction_impl.cpp b/src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction_impl.cpp
similarity index 100%
rename from src/TNL/Containers/Algorithms/cuda-reduction_impl.cpp
rename to src/TNL/Containers/Algorithms/TemplateExplicitInstantiation/cuda-reduction_impl.cpp
diff --git a/src/TNL/Containers/Algorithms/cuda-prefix-sum_impl.cpp b/src/TNL/Containers/Algorithms/cuda-prefix-sum_impl.cpp
deleted file mode 100644
index ebce329454f166df941c143237f173d801ffe697..0000000000000000000000000000000000000000
--- a/src/TNL/Containers/Algorithms/cuda-prefix-sum_impl.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-/***************************************************************************
-                          cuda-prefix-sum_impl.cpp  -  description
-                             -------------------
-    begin                : Jan 18, 2014
-    copyright            : (C) 2014 by Tomas Oberhuber
-    email                : tomas.oberhuber@fjfi.cvut.cz
- ***************************************************************************/
-
-/* See Copyright Notice in tnl/Copyright */
-
-
-
-