headOption now uses Iterable