let's ask some haskell users to review this