advantages of extension methods in c#