diff --git a/src/TNL/Devices/MIC.h b/src/TNL/Devices/MIC.h
index db1a238097f12cdaf3a2076b030baebe50d94eaf..f347a24d1f9e4fa6d5cceb7e2693807c7158065a 100644
--- a/src/TNL/Devices/MIC.h
+++ b/src/TNL/Devices/MIC.h
@@ -134,29 +134,6 @@ class MIC
             }
         };
 
-        static inline
-        void* AllocMIC(size_t size)
-        {
-            Devices::MICHider<void> hide_ptr;
-            #pragma offload target(mic) out(hide_ptr) in(size)
-            {
-                hide_ptr.pointer=malloc(size);
-            }
-            return hide_ptr.pointer;
-        };
-
-        static inline
-        void FreeMIC(void* ptr)
-        {
-                Devices::MICHider<void> hide_ptr;
-                hide_ptr.pointer=ptr;
-                #pragma offload target(mic) in(hide_ptr)
-                {
-                        free(hide_ptr.pointer);
-                }
-        };
-
-
 #endif
 
    static void insertSmartPointer( Pointers::SmartPointer* pointer )
diff --git a/src/TNL/Pointers/DevicePointer.h b/src/TNL/Pointers/DevicePointer.h
index 867f18fcbf0bb4c2aaee8e621616c5fe0e6417dc..b0c0a934fa0dee01ebe4bb2d93abe3e6d0d36b68 100644
--- a/src/TNL/Pointers/DevicePointer.h
+++ b/src/TNL/Pointers/DevicePointer.h
@@ -12,6 +12,7 @@
 
 #pragma once
 
+#include <TNL/Allocators/Default.h>
 #include <TNL/Devices/Host.h>
 #include <TNL/Devices/Cuda.h>
 #include <TNL/Devices/MIC.h>
@@ -695,7 +696,7 @@ class DevicePointer< Object, Devices::MIC > : public SmartPointer
          if( ! this->pd )
             return false;
          // pass to device
-         this->mic_pointer = (ObjectType*)Devices::MIC::AllocMIC(sizeof(ObjectType));
+         this->mic_pointer = Allocators:::MIC< ObjectType >().allocate(1);
          if( ! this->mic_pointer )
             return false;
          Devices::MIC::CopyToMIC((void*)this->mic_pointer,(void*)this->pointer,sizeof(ObjectType));
@@ -733,7 +734,7 @@ class DevicePointer< Object, Devices::MIC > : public SmartPointer
                delete this->pd;
                this->pd = nullptr;
                if( this->mic_pointer )
-                  Devices::MIC::FreeMIC( (void*) this->mic_pointer );
+                  Allocators:::MIC< ObjectType >().deallocate(this->mic_pointer, 1);
             }
          }
       }
diff --git a/src/TNL/Pointers/SharedPointerMic.h b/src/TNL/Pointers/SharedPointerMic.h
index 0e19e78b21eb48d8d2c83df35332ad6f888e9a93..0c2958b4ad7c6552f58363c98dca5104908f04cc 100644
--- a/src/TNL/Pointers/SharedPointerMic.h
+++ b/src/TNL/Pointers/SharedPointerMic.h
@@ -14,6 +14,7 @@
 
 #include "SharedPointer.h"
 
+#include <TNL/Allocators/Default.h>
 #include <TNL/Devices/MIC.h>
 #include <TNL/Pointers/SmartPointer.h>
 
@@ -307,7 +308,7 @@ class SharedPointer< Object, Devices::MIC > : public SmartPointer
          if( ! this->pd )
             return false;
 
-         mic_pointer=(Object*)Devices::MIC::AllocMIC(sizeof(Object));
+         mic_pointer = Allocators::MIC< Object >().allocate(1);
          Devices::MIC::CopyToMIC((void*)this->mic_pointer,(void*) &this->pd->data,sizeof(Object));
 
          if( ! this->mic_pointer )
@@ -350,8 +351,8 @@ class SharedPointer< Object, Devices::MIC > : public SmartPointer
                this->pd = nullptr;
                if( this->mic_pointer )
                {
-                   Devices::MIC::FreeMIC((void*)mic_pointer);
-                   mic_pointer=nullptr;
+                  Allocators:::MIC< ObjectType >().deallocate(mic_pointer, 1);
+                  mic_pointer=nullptr;
                }
 #ifdef TNL_DEBUG_SHARED_POINTERS
                std::cerr << "...deleted data." << std::endl;
diff --git a/src/TNL/Pointers/UniquePointer.h b/src/TNL/Pointers/UniquePointer.h
index c8efd5afe38d47b07904be5e93d5de6f5fe53aec..cfb7b543fc3e94858ad5c34d4bf8e8c0faf85462 100644
--- a/src/TNL/Pointers/UniquePointer.h
+++ b/src/TNL/Pointers/UniquePointer.h
@@ -12,6 +12,7 @@
 
 #pragma once
 
+#include <TNL/Allocators/Default.h>
 #include <TNL/Devices/Host.h>
 #include <TNL/Devices/Cuda.h>
 #include <TNL/Devices/MIC.h>
@@ -446,7 +447,7 @@ class UniquePointer< Object, Devices::MIC > : public SmartPointer
          if( ! this->pd )
             return false;
          // pass to device
-         this->mic_pointer=(Object*)Devices::MIC::AllocMIC(sizeof(Object));
+         this->mic_pointer = Allocators::MIC< Object >().allocate(1);
          if( ! this->mic_pointer )
             return false;
          Devices::MIC::CopyToMIC((void*)mic_pointer,(void*)&this->pd->data,sizeof(Object));
@@ -477,7 +478,7 @@ class UniquePointer< Object, Devices::MIC > : public SmartPointer
          if( this->pd )
             delete this->pd;
          if( this->mic_pointer )
-             Devices::MIC::FreeMIC(mic_pointer);
+            Allocators:::MIC< ObjectType >().deallocate(mic_pointer, 1);
       }
 
       PointerData* pd;