Key/value store in the free monad