diff --git a/code/Common/Maybe.h b/code/Common/Maybe.h
index 3eb2e1d979b2f6f5a7e196ff7f6a36acb9e589c1..b23865b864a447a76d367d5ca40a0a3153d1e2af 100644
--- a/code/Common/Maybe.h
+++ b/code/Common/Maybe.h
@@ -1,29 +1,89 @@
+/*
+Open Asset Import Library (assimp)
+----------------------------------------------------------------------
+
+Copyright (c) 2006-2022, assimp team
+
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms,
+with or without modification, are permitted provided that the
+following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of the assimp team, nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission of the assimp team.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+*/
 #pragma once
+
 #include <assimp/ai_assert.h>
 
+namespace Assimp {
+
+/// @brief This class implements an optional type
+/// @tparam T   The type to store.
 template <typename T>
 struct Maybe {
-private:
-    T _val;
-    bool _valid;
-
-public:
-    Maybe() :
-            _valid(false) {}
+    /// @brief 
+    Maybe() = default;
 
+    /// @brief 
+    /// @param val 
     explicit Maybe(const T &val) :
-            _val(val), _valid(true) {
-    }
+            _val(val), _valid(true) {}
 
+    /// @brief Validate the value
+    /// @return true if valid.
     operator bool() const {
         return _valid;
     }
 
+    /// @brief Will assign a value.
+    /// @param v The new valid value.
+    void Set(T &v) {
+        ai_assert(!_valid);
+
+        _valid = true;
+        _val = v;
+    }
+
+    /// @brief  Will return the value when it is valid.
+    /// @return The value.
     const T &Get() const {
         ai_assert(_valid);
         return _val;
     }
 
-private:
     Maybe &operator&() = delete;
+    Maybe(const Maybe &) = delete;
+
+private:
+    T _val;
+    bool _valid = false;
 };
+
+} // namespace Assimp
diff --git a/code/Common/simd.h b/code/Common/simd.h
index 0a062a248c21377760ce9ede4143e0cbcde627c6..a1d9366293229018a491372123cbab940151b3b5 100644
--- a/code/Common/simd.h
+++ b/code/Common/simd.h
@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
 
 Copyright (c) 2006-2022, assimp team
 
-
-
 All rights reserved.
 
 Redistribution and use of this software in source and binary forms,
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 5c87dabbe8760c99db855a9e07763208bb1e1e79..87a5ebadbfe2a6e496f11c83f4f4952107d30a71 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -89,6 +89,7 @@ SET( COMMON
   unit/utProfiler.cpp
   unit/utSharedPPData.cpp
   unit/utStringUtils.cpp
+  unit/Common/utMaybe.cpp
   unit/Common/utMesh.cpp
   unit/Common/utStandardShapes.cpp
   unit/Common/uiScene.cpp
diff --git a/test/unit/Common/utMaybe.cpp b/test/unit/Common/utMaybe.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9de300290ff92d526a36b31c2d51b9803a063cba
--- /dev/null
+++ b/test/unit/Common/utMaybe.cpp
@@ -0,0 +1,54 @@
+/*
+---------------------------------------------------------------------------
+Open Asset Import Library (assimp)
+---------------------------------------------------------------------------
+
+Copyright (c) 2006-2022, assimp team
+
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms,
+with or without modification, are permitted provided that the following
+conditions are met:
+
+* Redistributions of source code must retain the above
+copyright notice, this list of conditions and the
+following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the
+following disclaimer in the documentation and/or other
+materials provided with the distribution.
+
+* Neither the name of the assimp team, nor the names of its
+contributors may be used to endorse or promote products
+derived from this software without specific prior
+written permission of the assimp team.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+---------------------------------------------------------------------------
+*/
+
+#include "UnitTestPCH.h"
+#include "Common/Maybe.h"
+
+using namespace Assimp;
+
+class utMaybe : public ::testing::Test {
+    // empty
+};
+
+TEST_F(utMaybe, creationTest) {
+    Maybe<int> first(1);
+    EXPECT_EQ(first.Get(), 1);
+}