support .NET 3.5 and later