you can define them in different scopes, some of this stuff should be provided, some might be optional