diff --git a/src/TNL/Containers/Vector.h b/src/TNL/Containers/Vector.h
index 31a3972bb427362a1f1bdbf78c3baeaf9082bd50..7c54561c5690d48f53b27f7da24957c98d95a4b3 100644
--- a/src/TNL/Containers/Vector.h
+++ b/src/TNL/Containers/Vector.h
@@ -42,11 +42,39 @@ class Vector
 : public Array< Real, Device, Index, Allocator >
 {
 public:
+
+   /**
+    * \brief Type of elements stored in this vector.
+    */
    using RealType = Real;
+
+   /**
+    * \brief Device where the vector is allocated.
+    * 
+    * See \ref Devices::Host or \ref Devices::Cuda.
+    */
    using DeviceType = Device;
+
+   /**
+    * \brief Type being used for the vector elements indexing.
+    */
    using IndexType = Index;
+
+   /**
+    * \brief Allocator type used for allocating this vector.
+    * 
+    * See \ref Allocators::Cuda, \ref Allocators::CudaHost, \ref Allocators::CudaManaged, \ref Allocators::Host or \ref Allocators:Default.
+    */
    using AllocatorType = Allocator;
+
+   /**
+    * \brief Defines the same vector type but allocated on host (CPU).
+    */
    using HostType = Vector< Real, TNL::Devices::Host, Index >;
+
+   /**
+    * \brief Defines the same vector type but allocated on CUDA device (GPU).
+    */
    using CudaType = Vector< Real, TNL::Devices::Cuda, Index >;
    using ViewType = VectorView< Real, Device, Index >;
    using ConstViewType = VectorView< std::add_const_t< Real >, Device, Index >;
@@ -55,23 +83,44 @@ public:
    using Array< Real, Device, Index, Allocator >::Array;
    using Array< Real, Device, Index, Allocator >::operator=;
 
-   //! \brief Constructs an empty array with zero size.
+   /**
+    * \brief Constructs an empty array with zero size.
+    */
    Vector() = default;
-   //! \brief Copy constructor (makes a deep copy).
+
+   /**
+    * \brief Copy constructor (makes a deep copy).
+    */
    explicit Vector( const Vector& ) = default;
-   //! \brief Copy constructor with a specific allocator (makes a deep copy).
+
+   /**
+    * \brief Copy constructor with a specific allocator (makes a deep copy).
+    */
    explicit Vector( const Vector& vector, const AllocatorType& allocator );
-   //! \brief Default move constructor.
+
+   /**
+    * \brief Default move constructor.
+    */
    Vector( Vector&& ) = default;
-   //! \brief Copy-assignment operator for copying data from another vector.
+
+   /**
+    * \brief Copy-assignment operator for copying data from another vector.
+    */
    Vector& operator=( const Vector& ) = default;
-   //! \brief Move-assignment operator for acquiring data from \e rvalues.
+
+   /**
+    * \brief Move-assignment operator for acquiring data from \e rvalues.
+    */
    Vector& operator=( Vector&& ) = default;
 
-   //! \brief Returns a \ref String representation of the vector type in C++ style.
+   /**
+    * \brief Returns a \ref String representation of the vector type in C++ style.
+    */
    static String getType();
 
-   //! \brief Returns a \ref String representation of the vector type in C++ style.
+   /**
+    * \brief Returns a \ref String representation of the vector type in C++ style.
+    */
    virtual String getTypeVirtual() const;
 
    /**
@@ -198,28 +247,71 @@ public:
    Vector& operator/=( const VectorExpression& expression );
 
    /**
-    * \brief Returns specific sums of elements of this vector.
+    * \brief Computes prefix sum of the vector elements.
     *
-    * FIXME: computePrefixSum does not exist
+    * Computes prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector remain unchanged.
     *
-    * Does the same as \ref computePrefixSum, but computes only sums for elements
-    * with the index in range from \e begin to \e end. The other elements of this
-    * vector remain untouched - with the same value.
-    *
-    * \param begin Index of the element in this vector which to begin with.
-    * \param end Index of the element in this vector which to end with.
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * 
+    * \param begin beginning of the index range
+    * \param end end of the index range.
     */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive >
    void prefixSum( IndexType begin = 0, IndexType end = 0 );
 
+   /**
+    * \brief Computes segmented prefix sum of the vector elements.
+    *
+    * Computes segmented prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector remain unchanged. Whole vector is assumed
+    * by default, i.e. when \e begin and \e end are set to zero.
+    *
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * \tparam FlagsArray is an array type describing beginnings of the segments.
+    * 
+    * \param flags is an array having `1` at the beginning of each segment and `0` on any other position
+    * \param begin beginning of the index range
+    * \param end end of the index range.
+    */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive,
              typename FlagsArray >
    void segmentedPrefixSum( FlagsArray& flags, IndexType begin = 0, IndexType end = 0 );
 
+   /**
+    * \brief Computes prefix sum of the vector expression.
+    *
+    * Computes prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector remain unchanged. Whole vector expression is assumed
+    * by default, i.e. when \e begin and \e end are set to zero.
+    *
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * \tparam VectorExpression is the vector expression.
+    * 
+    * \param expression is the vector expression.
+    * \param begin beginning of the index range
+    * \param end end of the index range.
+    */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive,
              typename VectorExpression >
    void prefixSum( const VectorExpression& expression, IndexType begin = 0, IndexType end = 0 );
 
+   /**
+    * \brief Computes segmented prefix sum of a vector expression.
+    *
+    * Computes segmented prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector remain unchanged. Whole vector expression is assumed
+    * by default, i.e. when \e begin and \e end are set to zero.
+    *
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * \tparam VectorExpression is the vector expression.
+    * \tparam FlagsArray is an array type describing beginnings of the segments.
+    * 
+    * \param expression is the vector expression.
+    * \param flags is an array having `1` at the beginning of each segment and `0` on any other position
+    * \param begin beginning of the index range
+    * \param end end of the index range.
+    */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive,
              typename VectorExpression,
              typename FlagsArray >
diff --git a/src/TNL/Containers/VectorView.h b/src/TNL/Containers/VectorView.h
index f133d9c1027de2c772e817942e1ef04ec6446eec..dab971dcc7e2c5879186cae02604d2e04d6faa4a 100644
--- a/src/TNL/Containers/VectorView.h
+++ b/src/TNL/Containers/VectorView.h
@@ -39,12 +39,41 @@ class VectorView
    using BaseType = ArrayView< Real, Device, Index >;
    using NonConstReal = typename std::remove_const< Real >::type;
 public:
+   /**
+    * \brief Type of elements stored in this vector.
+    */
    using RealType = Real;
+
+   /**
+    * \brief Device where the vector is allocated.
+    * 
+    * See \ref Devices::Host or \ref Devices::Cuda.
+    */
    using DeviceType = Device;
+
+   /**
+    * \brief Type being used for the vector elements indexing.
+    */
    using IndexType = Index;
-   using HostType = VectorView< Real, Devices::Host, Index >;
-   using CudaType = VectorView< Real, Devices::Cuda, Index >;
+
+   /**
+    * \brief Defines the same vector type but allocated on host (CPU).
+    */
+   using HostType = VectorView< Real, TNL::Devices::Host, Index >;
+
+   /**
+    * \brief Defines the same vector type but allocated on CUDA device (GPU).
+    */
+   using CudaType = VectorView< Real, TNL::Devices::Cuda, Index >;
+
+   /**
+    * \brief Compatible VectorView type.
+    */
    using ViewType = VectorView< Real, Device, Index >;
+
+   /**
+    * \brief Compatible constant VectorView type.
+    */
    using ConstViewType = VectorView< std::add_const_t< Real >, Device, Index >;
 
    // constructors and assignment operators inherited from the class ArrayView
@@ -58,14 +87,18 @@ public:
    __cuda_callable__
    VectorView() = default;
 
-   //! \brief Constructor for the initialization by a base class object.
+   /**
+    * \brief Constructor for the initialization by a base class object.
+    */
    // initialization by base class is not a copy constructor so it has to be explicit
    template< typename Real_ >  // template catches both const and non-const qualified Element
    __cuda_callable__
    VectorView( const ArrayView< Real_, Device, Index >& view )
    : BaseType( view ) {}
 
-   //! \brief Returns a \ref String representation of the vector view type.
+   /**
+    * \brief Returns a \ref String representation of the vector view type.
+    */
    static String getType();
 
    /**
@@ -187,28 +220,71 @@ public:
    VectorView& operator/=( const VectorExpression& expression );
 
    /**
-    * \brief Returns specific sums of elements of this vector view.
+    * \brief Computes prefix sum of the vector view elements.
     *
-    * FIXME: computePrefixSum does not exist
+    * Computes prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector view remain unchanged.
     *
-    * Does the same as \ref computePrefixSum, but computes only sums for elements
-    * with the index in range from \e begin to \e end. The other elements of this
-    * vector remain untouched - with the same value.
-    *
-    * \param begin Index of the element in this vector view which to begin with.
-    * \param end Index of the element in this vector view which to end with.
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * 
+    * \param begin beginning of the index range
+    * \param end end of the index range.
     */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive >
    void prefixSum( IndexType begin = 0, IndexType end = 0 );
 
+   /**
+    * \brief Computes segmented prefix sum of the vector view elements.
+    *
+    * Computes segmented prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector view remain unchanged. Whole vector view is assumed
+    * by default, i.e. when \e begin and \e end are set to zero.
+    *
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * \tparam FlagsArray is an array type describing beginnings of the segments.
+    * 
+    * \param flags is an array having `1` at the beginning of each segment and `0` on any other position
+    * \param begin beginning of the index range
+    * \param end end of the index range.
+    */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive,
              typename FlagsArray >
    void segmentedPrefixSum( FlagsArray& flags, IndexType begin = 0, IndexType end = 0 );
 
+   /**
+    * \brief Computes prefix sum of the vector expression.
+    *
+    * Computes prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector remain unchanged. Whole vector expression is assumed
+    * by default, i.e. when \e begin and \e end are set to zero.
+    *
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * \tparam VectorExpression is the vector expression.
+    * 
+    * \param expression is the vector expression.
+    * \param begin beginning of the index range
+    * \param end end of the index range.
+    */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive,
              typename VectorExpression >
    void prefixSum( const VectorExpression& expression, IndexType begin = 0, IndexType end = 0 );
 
+   /**
+    * \brief Computes segmented prefix sum of a vector expression.
+    *
+    * Computes segmented prefix sum for elements within the index range [ \e begin to \e end ).
+    * The other elements of this vector remain unchanged. Whole vector expression is assumed
+    * by default, i.e. when \e begin and \e end are set to zero.
+    *
+    * \tparam Type tells the prefix sum type - either \e Inclusive of \e Exclusive.
+    * \tparam VectorExpression is the vector expression.
+    * \tparam FlagsArray is an array type describing beginnings of the segments.
+    * 
+    * \param expression is the vector expression.
+    * \param flags is an array having `1` at the beginning of each segment and `0` on any other position
+    * \param begin beginning of the index range
+    * \param end end of the index range.
+    */
    template< Algorithms::ScanType Type = Algorithms::ScanType::Inclusive,
              typename VectorExpression,
              typename FlagsArray >