I haven't tested but am concerned that CollectionTools.Concat( this IEnumerable<T> items, params T[] ts ), when called with a single param, could lead to ambiguity with Enumerable.Concat, or at a minimum lead to mistakenly passing a single object where a collection is meant, or vice versa. I suggest removing this method and instead using chained Enumerable.Append calls or passing an explicit array to Enumerable.Concat.