inverting destroy and copy works, thanksbtw I managed to untagle Result and Guarded even more by using a different function to return different Result.error\: ● old\:https://github.com/status-im/nim-status/blob/5b416c8122758eb2defdf9f3139 1f0c1c85bc63e/status/private/util.nim#L84 ● new\:https://github.com/arnetheduck/nim-results/blob/df8113dda4c2d74d460a8fa9 8252b0b771bf1f27/results.nim#L769 the second approach doesn't =copy/=dup the Result.Ok object and I managed to use it safely in multithreaded code. Nice!