We tackle the issue of abstraction in languages with algebraic effects and handlers, in the sense embodied by an ML-style module system. This issue turns out to be not as simple as hiding the definition of an effect from the user, since the execution of effectful programs rely on a dynamic process of matching an operation to the appropriate handler. This process, if implemented naively, can break the abstraction by “stealing” an effect from the inside of what was supposed to be a black box. However, we can solve this issue in an elegant way by introducing effect coercions that prevent such capture. In this presentation, we discuss the design principles and practice of programming in Helium: an experimental language that features abstract algebraic effects.