need to learn more about optimization of Haskell - this last one is pretty slow
need to learn more about optimization of Haskell - this last one is pretty slow