pure vs impure, cleanup