# Conventions

Our first aim is to remove friction, it is not always easy and cannot be done every single time, but one thing that can give a lot of benefits in this area is to move from a configuration based toolkit to a convention based toolkit, we suppose that this concept is widely accepted and is nothing new.

What happens when these lines of code are executed:

```csharp
public partial class App : Application
{
    public App()
    {
        this.AddRadicalApplication<MainView>();
    }
}
```

A lot of things:

1. The application `Startup` event is wired;
2. When the `Startup` event is fired:
   1. Assemblies are scanned looking for all types
   2. `ServiceCollection` is configured using the [bootstrap conventions](https://github.com/RadicalFx/documentation/tree/3593d0c5b04875dd1fb6be74908fc5cea4ac1a8d/mvvm/bootstrap-conventions.md);
   3. The Inversion of Control container is created;&#x20;
   4. The main window (the one identified by the TShellView generic parameter) is resolved and shown;
