diff --git a/deps/ox/src/ox/ptrarith/ptr.hpp b/deps/ox/src/ox/ptrarith/ptr.hpp
index 0746d628..d406f8bb 100644
--- a/deps/ox/src/ox/ptrarith/ptr.hpp
+++ b/deps/ox/src/ox/ptrarith/ptr.hpp
@@ -17,6 +17,7 @@ class Ptr {
 
 	private:
 		uint8_t *m_dataStart = nullptr;
+		size_t m_dataSize = 0;
 		size_t m_itemOffset = 0;
 		size_t m_itemSize = 0;
 		// this should be removed later on, but the excessive validation is
@@ -72,6 +73,9 @@ class Ptr {
 		template<typename SubT>
 		inline Ptr<SubT, size_t, sizeof(T)> subPtr(size_t offset);
 
+		template<typename SubT>
+		inline const Ptr<SubT, size_t, minOffset> to() const;
+
 };
 
 template<typename T, typename size_t, size_t minOffset>
@@ -86,6 +90,7 @@ inline Ptr<T, size_t, minOffset>::Ptr(void *dataStart, size_t dataSize, size_t i
 	    itemStart >= minOffset and
 	    itemStart + itemSize <= dataSize) {
 		m_dataStart = reinterpret_cast<uint8_t*>(dataStart);
+		m_dataSize = dataSize;
 		m_itemOffset = itemStart;
 		m_itemSize = itemSize;
 	}
@@ -189,8 +194,7 @@ inline bool Ptr<T, size_t, minOffset>::operator!=(const Ptr<T, size_t, minOffset
 template<typename T, typename size_t, size_t minOffset>
 template<typename SubT>
 inline const Ptr<SubT, size_t, sizeof(T)> Ptr<T, size_t, minOffset>::subPtr(size_t offset, size_t size) const {
-	auto out = Ptr<SubT, size_t, sizeof(T)>(get(), this->size(), offset, size);
-	return out;
+	return Ptr<SubT, size_t, sizeof(T)>(get(), this->size(), offset, size);
 }
 
 template<typename T, typename size_t, size_t minOffset>
@@ -203,8 +207,7 @@ inline const Ptr<SubT, size_t, sizeof(T)> Ptr<T, size_t, minOffset>::subPtr(size
 template<typename T, typename size_t, size_t minOffset>
 template<typename SubT>
 inline Ptr<SubT, size_t, sizeof(T)> Ptr<T, size_t, minOffset>::subPtr(size_t offset, size_t size) {
-	auto out = Ptr<SubT, size_t, sizeof(T)>(get(), this->size(), offset, size);
-	return out;
+	return Ptr<SubT, size_t, sizeof(T)>(get(), this->size(), offset, size);
 }
 
 template<typename T, typename size_t, size_t minOffset>
@@ -214,4 +217,10 @@ inline Ptr<SubT, size_t, sizeof(T)> Ptr<T, size_t, minOffset>::subPtr(size_t off
 	return subPtr<SubT>(offset, m_itemSize - offset);
 }
 
+template<typename T, typename size_t, size_t minOffset>
+template<typename SubT>
+inline const Ptr<SubT, size_t, minOffset> Ptr<T, size_t, minOffset>::to() const {
+	return Ptr<SubT, size_t, minOffset>(m_dataStart, m_dataSize, m_itemOffset, m_itemSize);
+}
+
 }