diff --git a/src/TNL/Containers/Array.h b/src/TNL/Containers/Array.h
index bdeff1f840736f7de2712342acf85ca66d1f0375..abc06ea8e2f3aa840649789a11ed7ff71f9515b9 100644
--- a/src/TNL/Containers/Array.h
+++ b/src/TNL/Containers/Array.h
@@ -29,9 +29,9 @@ template< int, typename > class StaticArray;
  * \brief Array is responsible for memory management, basic elements 
  * manipulation and I/O operations. 
  *
- * \tparam Value Type of array values.
- * \tparam Device Device type - some of \ref Devices::Host and \ref Devices::Cuda.
- * \tparam Index Type for indexing.
+ * \tparam Value is type of array elements.
+ * \tparam Device is device where the array is going to be allocated - some of \ref Devices::Host and \ref Devices::Cuda.
+ * \tparam Index is indexing type.
  *
  * In the \e Device type, the Array remembers where the memory is allocated. 
  * This ensures the compile-time checks of correct pointers manipulation.
@@ -55,6 +55,8 @@ template< int, typename > class StaticArray;
  * 
  * \par Example
  * \include ArrayExample.cpp
+ * 
+ * See also \ref Containers::ArravView, \ref Containers::Vector, \ref Containers::VectorView.
  */
 template< typename Value,
           typename Device = Devices::Host,
@@ -72,20 +74,26 @@ class Array : public Object
 
       /** \brief Basic constructor.
        *
-       * Constructs an empty array with the size of zero.
+       * Constructs an empty array with zero size.
        */
       Array();
 
       /**
-       * \brief Constructor with size.
+       * \brief Constructor with array size.
        *
-       * \param size Number of array elements. / Size of allocated memory.
+       * \param size is number of array elements.
        */
       Array( const IndexType& size );
 
       /**
-       * \brief Constructor with data and size.
+       * \brief Constructor with data pointer and size.
+       *
+       * In this case, the Array just encapsulates the pointer \e data. No 
+       * deallocation is done in destructor.
        *
+       * This behavior of the Array is obsolete and \ref ArrayView should be used
+       * instead.
+       * 
        * \param data Pointer to data.
        * \param size Number of array elements.
        */
@@ -93,25 +101,33 @@ class Array : public Object
              const IndexType& size );
 
       /**
-       * 
-       * @param 
+       * \brief Copy constructor.
+       *
+       * \param array is an array to be copied.
        */
       // Deep copy does not work because of EllpackIndexMultiMap - TODO: Fix it
-      //Array( const Array& );
+      //Array( const Array& array );
 
       /**
-       * \brief Copy constructor.
+       * \brief Bind constructor .
        *
        * The constructor does not make a deep copy, but binds to the supplied array.
-       * \param array Existing array that is to be bound.
-       * \param begin The first index which should be bound.
-       * \param size Number of array elements that should be bound.
+       * This is also obsolete, \ref ArraView should be used instead.
+       * 
+       * \param array is an array that is to be bound.
+       * \param begin is the first index which should be bound.
+       * \param size is number of array elements that should be bound.
        */
       Array( Array& array,
              const IndexType& begin = 0,
              const IndexType& size = 0 );
 
-      Array( Array&& );
+      /**
+       * \brief Move constructor.
+       * 
+       * @param array is an array to be moved
+       */
+      Array( Array&& array );
 
       /**
        * \brief Initialize the array from initializer list, i.e. { ... }
@@ -138,45 +154,51 @@ class Array : public Object
       Array( const std::vector< InValue >& vector );
 
       /**
-       *  \brief Returns type of array Value, Device type and the type of Index. 
+       *  \brief Returns type of array in C++ style.
        */
       static String getType();
 
       /**
-       * \brief Returns type of array Value, Device type and the type of Index. 
+       * \brief Returns type of array in C++ style.
        */
       virtual String getTypeVirtual() const;
 
       /**
-       *  \brief Returns (host) type of array Value, Device type and the type of Index. 
+       *  \brief Returns type of array in C++ style where device is always \ref Devices::Host.
        */
       static String getSerializationType();
 
       /**
-       *  \brief Returns (host) type of array Value, Device type and the type of Index.
+       *  \brief Returns type of array in C++ style where device is always \ref Devices::Host.
        */
       virtual String getSerializationTypeVirtual() const;
 
       /**
-       * \brief Method for setting the size of an array.
+       * \brief Method for setting the array size.
        *
        * If the array shares data with other arrays these data are released.
        * If the current data are not shared and the current size is the same
        * as the new one, nothing happens.
        *
-       * \param size Number of array elements.
+       * \param size is number of array elements.
        */
       void setSize( Index size );
 
-      /** \brief Method for getting the size of an array. */
+      /**
+       * \brief Method for getting the size of an array.
+       *
+       * This method can be called from device kernels.
+       *  
+       */
       __cuda_callable__ Index getSize() const;
 
       /**
        * \brief Assigns features of the existing \e array to the given array.
        *
        * Sets the same size as the size of existing \e array.
-       * \tparam ArrayT Type of array.
-       * \param array Reference to an existing array.
+       * 
+       * \tparam ArrayT is any array type having method \ref getSize().
+       * \param array is reference to the source array.
        */
       template< typename ArrayT >
       void setLike( const ArrayT& array );
@@ -186,6 +208,9 @@ class Array : public Object
        *
        * Releases old data and binds this array with new \e _data. Also sets new
        * \e _size of this array.
+       * 
+       * This method is obsolete, use \ref ArrayView instead.
+       * 
        * @param _data Pointer to new data.
        * @param _size Size of new _data. Number of elements.
        */
@@ -197,6 +222,9 @@ class Array : public Object
        *
        * Releases old data and binds this array with new \e array starting at
        * position \e begin. Also sets new \e size of this array.
+       * 
+       * This method is obsolete, use \ref ArrayView instead.
+       * 
        * \tparam ArrayT Type of array.
        * \param array Reference to a new array.
        * \param begin Starting index position.
@@ -212,6 +240,9 @@ class Array : public Object
        *
        * Releases old data and binds this array with a static array of size \e
        * Size.
+       * 
+       * This method is obsolete, use \ref ArrayView instead.
+       * 
        * \tparam Size Size of array.
        * \param array Reference to a static array.
        */
@@ -219,38 +250,45 @@ class Array : public Object
       void bind( StaticArray< Size, Value >& array );
 
       /**
-       * \brief Swaps all features of given array with existing \e array.
+       * \brief Swaps this array with another.
        *
-       * Swaps sizes, all values (data), allocated memory and references of given
-       * array with existing array.
-       * \param array Existing array, which features are swaped with given array.
+       * The swap is done by swaping the meta-data, i.e. pointers and sizes.
+       * 
+       * \param array is the array to be swapped with this array.
        */
       void swap( Array& array );
 
       /**
-       * \brief Resets the given array.
+       * \brief Resets the array.
        *
-       * Releases all data from array.
+       * Releases the array to empty state.
        */
       void reset();
 
       /**
-       * \brief Method for getting the data from given array with constant poiner.
+       * \brief Data pointer getter for constant instances.
+       * 
+       * This method can be called from device kernels.
        */
       __cuda_callable__ const Value* getData() const;
 
       /**
-       * \brief Method for getting the data from given array.
+       * \brief Data pointer getter.
+       * 
+       * This method can be called from device kernels.
        */
       __cuda_callable__ Value* getData();
 
       /**
-       * \brief Assignes the value \e x to the array element at position \e i.
+       * \brief Assignes the value \e v to the array element at position \e i.
        *
-       * \param i Index position.
-       * \param x New value of an element.
+       * This method can be called only from the host system (CPU) but even for
+       * arrays allocated on device (GPU).
+       * 
+       * \param i is element index.
+       * \param x is the new value of the element.
        */
-      void setElement( const Index& i, const Value& x );
+      void setElement( const Index& i, const Value& v );
 
       /**
        * \brief Accesses specified element at the position \e i and returns its value.