renamed custom delegate type to Func<>