updated work with Task without generic
support for yield return checks
simplified