implemented first, firstordefault,any