# Fundamentals

- [Container Options, extendability](/type-chef-di/fundamentals/container-options-extendability.md)
- [Injection](/type-chef-di/fundamentals/injection.md)
- [Type injection](/type-chef-di/fundamentals/injection/type-injection.md)
- [Token registration](/type-chef-di/fundamentals/injection/token-registration.md): register, registerTypes, asSingleton, asFactory
- [Token Injection](/type-chef-di/fundamentals/injection/token-injection.md)
- [Mixed injection](/type-chef-di/fundamentals/injection/mixed-injection.md)
- [Decorators](/type-chef-di/fundamentals/decorators.md)
- [@Injectable({instantiation: "singleton" | "prototype"})](/type-chef-di/fundamentals/decorators/injectable.md)
- [@Inject\<T>(key: string | Type\<T>)](/type-chef-di/fundamentals/decorators/inject-key-string.md)
- [@InjectProperty\<T>(key: string | Type\<T>)](/type-chef-di/fundamentals/decorators/injectproperty-key-string.md)
- [@Setter()](/type-chef-di/fundamentals/decorators/setter.md)
- [@InitMethod()](/type-chef-di/fundamentals/decorators/initmethod.md)
- [@FactoryMethod()](/type-chef-di/fundamentals/decorators/factorymethod.md)
- [@AddTags(tags)](/type-chef-di/fundamentals/decorators/addtags-tags.md)
- [@RunBefore(key: string | Type\<IRunBefore>)](/type-chef-di/fundamentals/decorators/runbefore-key-string.md)
- [@RunAfter(key: string | Type\<IRunAfter>)](/type-chef-di/fundamentals/decorators/runafter-key-string.md)
- [@MethodWrapper(key: string | Type\<IMethodWrapper>)](/type-chef-di/fundamentals/decorators/methodwrapper-key-string.md)
