do-notation instead of applicative notation