# Request Flow Every application follows the same flow: 1. Application starts from `index.php`. 1. The application, module, and system paths are set. (`APPPATH`, `MODPATH`, and `SYSPATH`) 2. Error reporting levels are set. 3. Install file is loaded, if it exists. 4. The bootstrap file, `APPPATH/bootstrap.php`, is included. 2. Once we are in `bootstrap.php`: 6. The [Kohana] class is loaded. 7. [Kohana::init] is called, which sets up error handling, caching, and logging. 8. [Kohana_Config] readers and [Kohana_Log] writers are attached. 9. [Kohana::modules] is called to enable additional modules. * Module paths are added to the [cascading filesystem](files). * Includes each module's `init.php` file, if it exists. * The `init.php` file can perform additional environment setup, including adding routes. 10. [Route::set] is called multiple times to define the [application routes](routing). 11. [Request::factory] is called to start processing the request. 1. Checks each route that has been set until a match is found. 2. Creates the controller instance and passes the request to it. 3. Calls the [Controller::before] method. 4. Calls the controller action, which generates the request response. 5. Calls the [Controller::after] method. * The above 5 steps can be repeated multiple times when using [HMVC sub-requests](requests). 3. Application flow returns to index.php 12. The main [Request] response is displayed