> (a) People could point out to me where I'm still confused, as=20 > revealed by > my code. Is it needlessly complicated? looks pretty reasonable to me :) as to why Unique is in the IO monad is probabyl because if it were in any other monad, you could start the monad twice and thus get a repeat of each ID (if that makes sense). The only way around this is to put it in IO.