diff --git a/include/cppbor/cppbor.h b/include/cppbor/cppbor.h
index 8338441..f7a2af0 100644
--- a/include/cppbor/cppbor.h
+++ b/include/cppbor/cppbor.h
@@ -142,6 +142,11 @@
     const Bstr* asBstr() const { return const_cast<Item*>(this)->asBstr(); }
     virtual Simple* asSimple() { return nullptr; }
     const Simple* asSimple() const { return const_cast<Item*>(this)->asSimple(); }
+    virtual Bool* asBool() { return nullptr; }
+    const Bool* asBool() const { return const_cast<Item*>(this)->asBool(); }
+    virtual Null* asNull() { return nullptr; }
+    const Null* asNull() const { return const_cast<Item*>(this)->asNull(); }
+
     virtual Map* asMap() { return nullptr; }
     const Map* asMap() const { return const_cast<Item*>(this)->asMap(); }
     virtual Array* asArray() { return nullptr; }
@@ -859,9 +864,6 @@
     MajorType type() const override { return kMajorType; }
 
     Simple* asSimple() override { return this; }
-
-    virtual const Bool* asBool() const { return nullptr; };
-    virtual const Null* asNull() const { return nullptr; };
 };
 
 /**
@@ -877,7 +879,7 @@
     bool operator==(const Bool& other) const& { return mValue == other.mValue; }
 
     SimpleType simpleType() const override { return kSimpleType; }
-    const Bool* asBool() const override { return this; }
+    Bool* asBool() override { return this; }
 
     size_t encodedSize() const override { return 1; }
 
@@ -907,7 +909,7 @@
     explicit Null() {}
 
     SimpleType simpleType() const override { return kSimpleType; }
-    const Null* asNull() const override { return this; }
+    Null* asNull() override { return this; }
 
     size_t encodedSize() const override { return 1; }
 
diff --git a/tests/cppbor_test.cpp b/tests/cppbor_test.cpp
index 68778dc..b9a2f35 100644
--- a/tests/cppbor_test.cpp
+++ b/tests/cppbor_test.cpp
@@ -721,6 +721,8 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -740,6 +742,8 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -759,6 +763,8 @@
     EXPECT_NE(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -778,6 +784,8 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_NE(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -796,15 +804,20 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_NE(nullptr, item->asSimple());
+    EXPECT_NE(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
     EXPECT_EQ(nullptr, item->asViewBstr());
 
     EXPECT_EQ(cppbor::BOOLEAN, item->asSimple()->simpleType());
+    EXPECT_NE(nullptr, item->asBool());
     EXPECT_NE(nullptr, item->asSimple()->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asSimple()->asNull());
 
+    EXPECT_FALSE(item->asBool()->value());
     EXPECT_FALSE(item->asSimple()->asBool()->value());
 }
 
@@ -818,6 +831,8 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_NE(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -836,6 +851,8 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_NE(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -853,6 +870,8 @@
     EXPECT_EQ(nullptr, item->asNint());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -881,6 +900,8 @@
     EXPECT_EQ(nullptr, item->asNint());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -912,13 +933,17 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_NE(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_NE(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
     EXPECT_EQ(nullptr, item->asViewBstr());
 
     EXPECT_EQ(NULL_T, item->asSimple()->simpleType());
+    EXPECT_EQ(nullptr, item->asBool());
     EXPECT_EQ(nullptr, item->asSimple()->asBool());
+    EXPECT_NE(nullptr, item->asNull());
     EXPECT_NE(nullptr, item->asSimple()->asNull());
 }
 
@@ -932,6 +957,8 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_NE(nullptr, item->asViewTstr());
@@ -952,6 +979,8 @@
     EXPECT_EQ(nullptr, item->asTstr());
     EXPECT_EQ(nullptr, item->asBstr());
     EXPECT_EQ(nullptr, item->asSimple());
+    EXPECT_EQ(nullptr, item->asBool());
+    EXPECT_EQ(nullptr, item->asNull());
     EXPECT_EQ(nullptr, item->asMap());
     EXPECT_EQ(nullptr, item->asArray());
     EXPECT_EQ(nullptr, item->asViewTstr());
@@ -1024,8 +1053,11 @@
     EXPECT_EQ(clone->type(), SIMPLE);
     EXPECT_NE(clone->asSimple(), nullptr);
     EXPECT_EQ(clone->asSimple()->simpleType(), cppbor::BOOLEAN);
+    EXPECT_NE(clone->asBool(), nullptr);
     EXPECT_NE(clone->asSimple()->asBool(), nullptr);
+    EXPECT_EQ(item, *clone->asBool());
     EXPECT_EQ(item, *clone->asSimple()->asBool());
+    EXPECT_EQ(*clone->asBool(), Bool(true));
     EXPECT_EQ(*clone->asSimple()->asBool(), Bool(true));
 }
 
