IORefs did not work very well either
Back to normal haskell to ask for a better solution
Remove redundant bangs