That's more of a general FP question but I'm always concerned about error handling being a breaking change when you use ADTs to represent errors. Say you use to have a function that could not fail, or maybe it use to throw, and now you're handling an error: if you turn it into an Effect you are breaking every caller and unit test. The reverse is also possible although nothing mandates that you turn a managed function into a pure function. So I've been thinking about turning any important function that lives at a boundary, or that is considered an important unit to be tested, into an Effect, even if it cannot fail. What's your take on this?