val itemsOpt:Result[Traversable[EOB_item]] = Result.traverse(items map (_.reportErrors)) (eobOpt <*> itemsOpt) flatMap save.tupled