diff --git a/source/mir/deser/low_level.d b/source/mir/deser/low_level.d
index 79a3dbb..7d44861 100644
--- a/source/mir/deser/low_level.d
+++ b/source/mir/deser/low_level.d
@@ -289,7 +289,7 @@ $(TABLE
 )
 +/
 IonErrorCode deserializeValueImpl(T)(scope IonDescribedValue data, scope ref T value)
-    pure @safe nothrow @nogc
+    pure @trusted nothrow @nogc
     if (isFloatingPoint!T)
 {
     if (_expect(data != null, true))
diff --git a/source/mir/deser/text/package.d b/source/mir/deser/text/package.d
index 9d6143e..8fe0bfd 100644
--- a/source/mir/deser/text/package.d
+++ b/source/mir/deser/text/package.d
@@ -841,7 +841,7 @@ private:
     }
 
     @(IonTokenType.TokenNumber)
-    void onNumber() @safe pure
+    void onNumber() @trusted pure
     {
         import mir.bignum.integer;
         import mir.bignum.decimal;
diff --git a/source/mir/ion/value.d b/source/mir/ion/value.d
index b4f6710..1417de7 100644
--- a/source/mir/ion/value.d
+++ b/source/mir/ion/value.d
@@ -1344,7 +1344,7 @@ struct IonDescribedDecimal
     +/
     // deprecated("Use inout(T) get(T)(scope out IonErrorCode)")
     IonErrorCode get(T)(scope ref T value)
-        @safe pure nothrow @nogc scope const
+        @trusted pure nothrow @nogc scope const
         if (isFloatingPoint!T && isMutable!T)
     {
         Decimal!128 decimal = void;
diff --git a/source/mir/ser/package.d b/source/mir/ser/package.d
index d4a9238..dc7864d 100644
--- a/source/mir/ser/package.d
+++ b/source/mir/ser/package.d
@@ -493,31 +493,31 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V
 
     foreach(member; aliasSeqOf!(SerializableMembers!V))
     {{
-        enum key = serdeGetKeyOut!(__traits(getMember, value, member));
+        enum key = serdeGetKeyOut!(V, member);
 
         static if (key !is null)
         {
-            static if (hasUDA!(__traits(getMember, value, member), serdeIgnoreDefault))
+            static if (hasUDA!(V, member, serdeIgnoreDefault))
             {
                 if (__traits(getMember, value, member) == __traits(getMember, V.init, member))
                     continue;
             }
 
-            static if(hasUDA!(__traits(getMember, value, member), serdeIgnoreOutIf))
+            static if(hasUDA!(V, member, serdeIgnoreOutIf))
             {
                 alias pred = serdeGetIgnoreOutIf!(__traits(getMember, value, member));
                 if (pred(__traits(getMember, value, member)))
                     continue;
             }
 
-            static if(hasUDA!(__traits(getMember, value, member), serdeIgnoreIfAggregate))
+            static if(hasUDA!(V, member, serdeIgnoreIfAggregate))
             {
                 alias pred = serdeGetIgnoreIfAggregate!(__traits(getMember, value, member));
                 if (pred(value))
                     continue;
             }
 
-            static if(hasUDA!(__traits(getMember, value, member), serdeIgnoreOutIfAggregate))
+            static if(hasUDA!(V, member, serdeIgnoreOutIfAggregate))
             {
                 alias pred = serdeGetIgnoreOutIfAggregate!(__traits(getMember, value, member));
                 if (pred(value))
@@ -536,7 +536,7 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V
                     continue;
             }
 
-            static if(hasUDA!(__traits(getMember, value, member), serdeTransformOut))
+            static if(hasUDA!(V, member, serdeTransformOut))
             {
                 alias f = serdeGetTransformOut!(__traits(getMember, value, member));
                 auto val = f(__traits(getMember, value, member));
@@ -569,12 +569,12 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V
                 serializer.putKey(key);
             }
 
-            static if(hasUDA!(__traits(getMember, value, member), serdeLikeList))
+            static if(hasUDA!(V, member, serdeLikeList))
             {
                 static assert(0);
             }
             else
-            static if(hasUDA!(__traits(getMember, value, member), serdeLikeStruct))
+            static if(hasUDA!(V, member, serdeLikeStruct))
             {
                 static if(is(W == interface) || is(W == class) || is(W : E[T], E, T))
                 {
@@ -604,7 +604,7 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V
                 serializer.structEnd(valState);
             }
             else
-            static if(hasUDA!(__traits(getMember, value, member), serdeProxy))
+            static if(hasUDA!(V, member, serdeProxy))
             {
                 serializeProxyCastImpl!(S, __traits(getMember, value, member))(serializer, val);
             }