Implement impure bits

Thinking of a free monad for those as well