Consider the following `ConfigureServices` method, which registers services and configures options:
[!code-csharp[](~/fundamentals/configuration/index/samples/3.x/ConfigSample/Startup2.cs?name=snippet)]
Related groups of registrations can be moved to an extension method to register services. For example, the configuration services are added to the following class:
[!code-csharp[](~/fundamentals/configuration/index/samples/3.x/ConfigSample/Options/MyConfigServiceCollectionExtensions.cs)]
The remaining services are registered in a similar class. The following `ConfigureServices` method uses the new extension methods to register the services:
[!code-csharp[](~/fundamentals/configuration/index/samples/3.x/ConfigSample/Startup4.cs?name=snippet)]
**_Note:_** Each `services.Add{GROUP_NAME}` extension method adds and potentially configures services. For example, adds the services MVC controllers with views require, and adds the services Razor Pages requires. We recommend that apps follow the naming convention of creating extension methods in the namespace. Creating extension methods in the `Microsoft.Extensions.DependencyInjection` namespace:
* Encapsulates groups of service registrations.
* Provides convenient [IntelliSense](/visualstudio/ide/using-intellisense) access to the service.