Added some more comments -- don't haskell me too much...