diff --git a/ndn-cxx/encoding/tlv-nfd.hpp b/ndn-cxx/encoding/tlv-nfd.hpp
index 0cf13b0..100dd93 100644
--- a/ndn-cxx/encoding/tlv-nfd.hpp
+++ b/ndn-cxx/encoding/tlv-nfd.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2021 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -22,15 +22,17 @@
 #ifndef NDN_CXX_ENCODING_TLV_NFD_HPP
 #define NDN_CXX_ENCODING_TLV_NFD_HPP
 
-#include "ndn-cxx/encoding/tlv.hpp"
-#include "ndn-cxx/encoding/nfd-constants.hpp"
+#include <cstdint>
 
 namespace ndn {
 namespace tlv {
 namespace nfd {
 
-// NFD Management protocol
-enum {
+/**
+ * @brief TLV-TYPE numbers defined by the NFD Management protocol.
+ * @sa https://redmine.named-data.net/projects/nfd/wiki/Management
+ */
+enum : uint32_t {
   // ControlParameters
   ControlParameters   = 104,
   FaceId              = 105,
@@ -100,7 +102,7 @@
 
   // RIB Management
   RibEntry = 128,
-  Route    = 129
+  Route    = 129,
 };
 
 } // namespace nfd
diff --git a/ndn-cxx/encoding/tlv-security.hpp b/ndn-cxx/encoding/tlv-security.hpp
index 3446bd6..be13371 100644
--- a/ndn-cxx/encoding/tlv-security.hpp
+++ b/ndn-cxx/encoding/tlv-security.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2021 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -22,14 +22,14 @@
 #ifndef NDN_CXX_ENCODING_TLV_SECURITY_HPP
 #define NDN_CXX_ENCODING_TLV_SECURITY_HPP
 
-#include "ndn-cxx/encoding/tlv.hpp"
+#include <cstdint>
 
 namespace ndn {
 namespace tlv {
 namespace security {
 
 /**
- * @brief TLV-TYPE numbers for SafeBag and related elements
+ * @brief TLV-TYPE numbers for SafeBag and related elements.
  * @sa <a href="../specs/safe-bag.html">SafeBag Format</a>
  */
 enum : uint32_t {
diff --git a/ndn-cxx/lp/field-decl.hpp b/ndn-cxx/lp/field-decl.hpp
index de264b7..1cb1916 100644
--- a/ndn-cxx/lp/field-decl.hpp
+++ b/ndn-cxx/lp/field-decl.hpp
@@ -169,14 +169,14 @@
  *  \tparam DECODER_TAG selects a specialization of DecodeHelper.
  *  \tparam ENCODER_TAG selects a specialization of EncodeHelper.
  */
-template<typename LOCATION, typename VALUE, uint64_t TYPE, bool REPEATABLE = false,
+template<typename LOCATION, typename VALUE, uint32_t TYPE, bool REPEATABLE = false,
          typename DECODER_TAG = VALUE, typename ENCODER_TAG = VALUE>
 class FieldDecl
 {
 public:
   using FieldLocation = LOCATION;
   using ValueType = VALUE;
-  using TlvType = std::integral_constant<uint64_t, TYPE>;
+  using TlvType = std::integral_constant<uint32_t, TYPE>;
   using IsRepeatable = std::bool_constant<REPEATABLE>;
 
   /** \brief Decode a field.
diff --git a/ndn-cxx/lp/field.hpp b/ndn-cxx/lp/field.hpp
index 4ba87fa..cae13f7 100644
--- a/ndn-cxx/lp/field.hpp
+++ b/ndn-cxx/lp/field.hpp
@@ -55,13 +55,13 @@
 } // namespace field_location_tags
 
 /**
- * \brief Concept check for fields.
+ * \brief Concept check for NDNLPv2 fields.
  */
 template<class X>
 struct Field
 {
   static_assert(std::is_base_of_v<field_location_tags::Base, typename X::FieldLocation>, "");
-  static_assert(std::is_same_v<typename X::TlvType::value_type, uint64_t>, "");
+  static_assert(std::is_same_v<typename X::TlvType::value_type, uint32_t>, "");
   static_assert(std::is_same_v<typename X::IsRepeatable::value_type, bool>, "");
   static_assert(std::is_default_constructible_v<typename X::ValueType>, "");
   static_assert(std::is_copy_constructible_v<typename X::ValueType>, "");
diff --git a/ndn-cxx/lp/packet.cpp b/ndn-cxx/lp/packet.cpp
index d6fb3e8..7097384 100644
--- a/ndn-cxx/lp/packet.cpp
+++ b/ndn-cxx/lp/packet.cpp
@@ -55,10 +55,10 @@
   FieldInfo() noexcept = default;
 
   explicit
-  FieldInfo(uint64_t tlv) noexcept;
+  FieldInfo(uint32_t type) noexcept;
 
 public:
-  uint64_t tlvType = 0;       ///< TLV-TYPE of the field; 0 if field does not exist
+  uint32_t tlvType = 0;       ///< TLV-TYPE of the field; 0 if field does not exist
   bool isRecognized = false;  ///< is this field known
   bool canIgnore = false;     ///< can this unknown field be ignored
   bool isRepeatable = false;  ///< is the field repeatable
@@ -84,8 +84,8 @@
   }
 };
 
-FieldInfo::FieldInfo(uint64_t tlv) noexcept
-  : tlvType(tlv)
+FieldInfo::FieldInfo(uint32_t type) noexcept
+  : tlvType(type)
 {
   boost::mpl::for_each<FieldSet>(boost::bind(ExtractFieldInfo(), this, _1));
   if (!isRecognized) {
@@ -104,10 +104,7 @@
 
 } // namespace
 
-Packet::Packet()
-  : m_wire(Block(tlv::LpPacket))
-{
-}
+Packet::Packet() = default;
 
 Packet::Packet(const Block& wire)
 {
@@ -170,7 +167,7 @@
 }
 
 bool
-Packet::comparePos(uint64_t first, const Block& second) noexcept
+Packet::comparePos(uint32_t first, const Block& second) noexcept
 {
   FieldInfo firstInfo(first);
   FieldInfo secondInfo(second.type());
diff --git a/ndn-cxx/lp/packet.hpp b/ndn-cxx/lp/packet.hpp
index 5b90549..ba38ebd 100644
--- a/ndn-cxx/lp/packet.hpp
+++ b/ndn-cxx/lp/packet.hpp
@@ -202,10 +202,10 @@
 
 private:
   static bool
-  comparePos(uint64_t first, const Block& second) noexcept;
+  comparePos(uint32_t first, const Block& second) noexcept;
 
 private:
-  mutable Block m_wire;
+  mutable Block m_wire{tlv::LpPacket};
 };
 
 } // namespace lp
diff --git a/ndn-cxx/lp/tlv.hpp b/ndn-cxx/lp/tlv.hpp
index 3678dbd..fe99f34 100644
--- a/ndn-cxx/lp/tlv.hpp
+++ b/ndn-cxx/lp/tlv.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2022 Regents of the University of California.
+ * Copyright (c) 2013-2023 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -22,6 +22,8 @@
 #ifndef NDN_CXX_LP_TLV_HPP
 #define NDN_CXX_LP_TLV_HPP
 
+#include <cstdint>
+
 namespace ndn {
 namespace lp {
 /**
@@ -30,9 +32,10 @@
 namespace tlv {
 
 /**
- * \brief TLV-TYPE numbers for NDNLPv2.
+ * @brief TLV-TYPE numbers for NDNLPv2.
+ * @sa https://redmine.named-data.net/projects/nfd/wiki/NDNLPv2#TLV-TYPE-Number-Assignments
  */
-enum {
+enum : uint32_t {
   LpPacket = 100,
   Fragment = 80,
   Sequence = 81,
@@ -50,28 +53,23 @@
   TxSequence = 840,
   NonDiscovery = 844,
   PrefixAnnouncement = 848,
-};
 
-enum {
   /**
    * \brief Lower bound of 1-octet header field.
    */
   HEADER1_MIN = 81,
-
   /**
    * \brief Upper bound of 1-octet header field.
    */
   HEADER1_MAX = 99,
-
   /**
    * \brief Lower bound of 3-octet header field.
    */
   HEADER3_MIN = 800,
-
   /**
    * \brief Upper bound of 3-octet header field.
    */
-  HEADER3_MAX = 959
+  HEADER3_MAX = 959,
 };
 
 } // namespace tlv
