haskell IO update + todos