diff --git a/src/TNL/Meshes/MeshDetails/CMakeLists.txt b/src/TNL/Meshes/MeshDetails/CMakeLists.txt
index d559677da2058b6e427a02212d0da1c9f810f7f4..3bc6e5306e7bfaf0c53ec81ba62881455178daca 100644
--- a/src/TNL/Meshes/MeshDetails/CMakeLists.txt
+++ b/src/TNL/Meshes/MeshDetails/CMakeLists.txt
@@ -3,7 +3,7 @@ ADD_SUBDIRECTORY( initializer )
 ADD_SUBDIRECTORY( layers )
 ADD_SUBDIRECTORY( traits )
 
-SET( headers MeshEntityId.h
+SET( headers MeshEntityIndex.h
              MeshEntityIntegrityChecker.h
              MeshEntityOrientation.h
              MeshEntityReferenceOrientation.h
diff --git a/src/TNL/Meshes/MeshDetails/MeshEntityId.h b/src/TNL/Meshes/MeshDetails/MeshEntityIndex.h
similarity index 64%
rename from src/TNL/Meshes/MeshDetails/MeshEntityId.h
rename to src/TNL/Meshes/MeshDetails/MeshEntityIndex.h
index b27f5369894dfedde774800429509bec8ea57ad5..7f064e9f76212fca8fa206f2fc39a1eb2b9e298c 100644
--- a/src/TNL/Meshes/MeshDetails/MeshEntityId.h
+++ b/src/TNL/Meshes/MeshDetails/MeshEntityIndex.h
@@ -1,5 +1,5 @@
 /***************************************************************************
-                          MeshEntityId.h  -  description
+                          MeshEntityIndex.h  -  description
                              -------------------
     begin                : Feb 28, 2014
     copyright            : (C) 2014 by Tomas Oberhuber et al.
@@ -21,28 +21,28 @@
 namespace TNL {
 namespace Meshes {
 
-template< typename IDType,
-          typename GlobalIndexType >
-class MeshEntityId
+template< typename IDType >
+class MeshEntityIndex
 {
 public:
-   MeshEntityId()
+   // FIXME: IDType may be unsigned
+   MeshEntityIndex()
       : id( -1 )
    {}
 
-   const IDType& getId() const
+   const IDType& getIndex() const
    {
       TNL_ASSERT( this->id >= 0, );
       return this->id;
    }
 
-   bool operator==( const MeshEntityId< IDType, GlobalIndexType >& id ) const
+   bool operator==( const MeshEntityIndex& id ) const
    {
       return ( this->id == id.id );
    }
 
 protected:
-   void setId( GlobalIndexType id )
+   void setIndex( IDType id )
    {
       this->id = id;
    }
@@ -50,17 +50,18 @@ protected:
    IDType id;
 };
 
-template< typename GlobalIndexType >
-class MeshEntityId< void, GlobalIndexType >
+template<>
+class MeshEntityIndex< void >
 {
 public:
-   bool operator==( const MeshEntityId< void, GlobalIndexType >& id ) const
+   bool operator==( const MeshEntityIndex& id ) const
    {
       return true;
    }
 
 protected:
-   void setId( GlobalIndexType )
+   template< typename Index >
+   void setIndex( Index )
    {}
 };
 
diff --git a/src/TNL/Meshes/MeshDetails/MeshEntity_impl.h b/src/TNL/Meshes/MeshDetails/MeshEntity_impl.h
index 7363da05a8d24f0e90b5483f14d64c8b3209eebe..2a18c36f07e328c31824c93ac89baaf771415216 100644
--- a/src/TNL/Meshes/MeshDetails/MeshEntity_impl.h
+++ b/src/TNL/Meshes/MeshDetails/MeshEntity_impl.h
@@ -82,8 +82,7 @@ operator==( const MeshEntity& entity ) const
 {
    return ( MeshSubentityAccess< MeshConfig, EntityTopology >::operator==( entity ) &&
             MeshSuperentityAccess< MeshConfig, EntityTopology >::operator==( entity ) &&
-            MeshEntityId< typename MeshConfig::IdType,
-                          typename MeshConfig::GlobalIndexType >::operator==( entity ) );
+            MeshEntityIndex< typename MeshConfig::IdType >::operator==( entity ) );
 }
 
 template< typename MeshConfig,
@@ -183,8 +182,7 @@ MeshEntity< MeshConfig, MeshVertexTopology >::
 operator==( const MeshEntity& entity ) const
 {
    return ( MeshSuperentityAccess< MeshConfig, MeshVertexTopology >::operator==( entity ) &&
-            MeshEntityId< typename MeshConfig::IdType,
-                          typename MeshConfig::GlobalIndexType >::operator==( entity ) &&
+            MeshEntityIndex< typename MeshConfig::IdType >::operator==( entity ) &&
             point == entity.point );
 }
 
diff --git a/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h b/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h
index 4d67b84fd1bac0a4ce57228a52306f402f798fa3..651f1341189731e42a4d2c72ff49be5ec7e13028 100644
--- a/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h
+++ b/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h
@@ -75,7 +75,7 @@ public:
 
    static void initEntity( EntityType& entity, const GlobalIndexType& entityIndex, const SeedType& entitySeed, InitializerType& initializer)
    {
-      initializer.setEntityId( entity, entityIndex );
+      initializer.setEntityIndex( entity, entityIndex );
       // this is necessary if we want to use existing entities instead of intermediate seeds to create subentity seeds
       for( LocalIndexType i = 0; i < entitySeed.getCornerIds().getSize(); i++ )
          initializer.template setSubentityIndex< 0 >( entity, entityIndex, i, entitySeed.getCornerIds()[ i ] );
@@ -98,7 +98,7 @@ public:
 
    static void initEntity( VertexType& entity, const GlobalIndexType& entityIndex, const PointType& point, InitializerType& initializer)
    {
-      initializer.setEntityId( entity, entityIndex );
+      initializer.setEntityIndex( entity, entityIndex );
       initializer.setVertexPoint( entity, point );
    }
 };
diff --git a/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h b/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h
index b2f8cde3db00dc80e354c99411b6089565daf3df..dc2f951e510c099f39528fa25d678717398ece0b 100644
--- a/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h
+++ b/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h
@@ -112,9 +112,9 @@ class MeshInitializer
       }
 
       template< typename Entity, typename GlobalIndex >
-      void setEntityId( Entity& entity, const GlobalIndex& index )
+      void setEntityIndex( Entity& entity, const GlobalIndex& index )
       {
-         entity.setId( index );
+         entity.setIndex( index );
       }
 
       template< int Dimension >
diff --git a/src/TNL/Meshes/MeshEntity.h b/src/TNL/Meshes/MeshEntity.h
index 6fa0820b1b2da463b927819c762603828333a273..89890d5e0188820e82ce2e121b8f5a12c3f4bf48 100644
--- a/src/TNL/Meshes/MeshEntity.h
+++ b/src/TNL/Meshes/MeshEntity.h
@@ -19,7 +19,7 @@
 #include <TNL/File.h>
 #include <TNL/Meshes/MeshDetails/traits/MeshTraits.h>
 #include <TNL/Meshes/Topologies/MeshVertexTopology.h>
-#include <TNL/Meshes/MeshDetails/MeshEntityId.h>
+#include <TNL/Meshes/MeshDetails/MeshEntityIndex.h>
 #include <TNL/Meshes/MeshDetails/layers/MeshSubentityAccess.h>
 #include <TNL/Meshes/MeshDetails/layers/MeshSuperentityAccess.h>
 #include <TNL/Meshes/MeshDetails/layers/MeshEntityStorageRebinder.h>
@@ -35,8 +35,7 @@ template< typename MeshConfig,
 class MeshEntity
    : protected MeshSubentityAccess< MeshConfig, EntityTopology_ >,
      protected MeshSuperentityAccess< MeshConfig, EntityTopology_ >,
-     public MeshEntityId< typename MeshConfig::IdType,
-                          typename MeshConfig::GlobalIndexType >
+     public MeshEntityIndex< typename MeshConfig::IdType >
 {
    public:
       using MeshTraitsType  = MeshTraits< MeshConfig >;
@@ -110,8 +109,7 @@ class MeshEntity
 template< typename MeshConfig >
 class MeshEntity< MeshConfig, MeshVertexTopology >
    : protected MeshSuperentityAccess< MeshConfig, MeshVertexTopology >,
-     public MeshEntityId< typename MeshConfig::IdType,
-                          typename MeshConfig::GlobalIndexType >
+     public MeshEntityIndex< typename MeshConfig::IdType >
 {
    public:
       using MeshTraitsType  = MeshTraits< MeshConfig >;
diff --git a/src/UnitTests/Meshes/MeshEntityTest.h b/src/UnitTests/Meshes/MeshEntityTest.h
index 3468732fd1667cfc4bbfb4de3711f8c0c96c6e06..a7dca6bfbcc09a67904ecd6ef5121242babc6c0c 100644
--- a/src/UnitTests/Meshes/MeshEntityTest.h
+++ b/src/UnitTests/Meshes/MeshEntityTest.h
@@ -79,7 +79,7 @@ public:
    using BaseType::bindSuperentitiesStorageNetwork;
    using BaseType::setNumberOfSuperentities;
    using BaseType::setSuperentityIndex;
-   using BaseType::setId;
+   using BaseType::setIndex;
 };
  
 TEST( MeshEntityTest, VertexMeshEntityTest )
@@ -157,9 +157,9 @@ TEST( MeshEntityTest, EdgeMeshEntityTest )
    edgeEntities[ 2 ].template bindSubentitiesStorageNetwork< 0 >( edgeVertexSubentities.getValues( 2 ) );
    edgeEntities[ 2 ].template setSubentityIndex< 0 >( 0, 2 );
    edgeEntities[ 2 ].template setSubentityIndex< 0 >( 1, 0 );
-   edgeEntities[ 0 ].setId( 0 );
-   edgeEntities[ 1 ].setId( 1 );
-   edgeEntities[ 2 ].setId( 2 );
+   edgeEntities[ 0 ].setIndex( 0 );
+   edgeEntities[ 1 ].setIndex( 1 );
+   edgeEntities[ 2 ].setIndex( 2 );
 
    ASSERT_TRUE( vertexEntities[ edgeEntities[ 0 ].getVertexIndex( 0 ) ].getPoint() == point0 );
    ASSERT_TRUE( vertexEntities[ edgeEntities[ 0 ].getVertexIndex( 1 ) ].getPoint() == point1 );