Free monads are a popular way to create embedded domain specific languages in Haskell. Unfortunately, conventional free monads are structurally sequential. To fix that, several works suggested free monads that can execute several operations at once, in parallel. However, so far there haven’t been any efforts known to the authors to ensure that executing operations in parallel doesn’t change program semantics. This work attempts to fill the gap by introducing a notion of independency of operations. We present a new independency-aware free monad that executes in parallel only those operations that are safe to be executed that way (i.e., independent from each other).