add firstOrDefault semantics; update documentation