# Customizing Environments
Katacoda provides a number of pre-configured environments that capture a number of use-cases out of the box without any changes required. However, to expand and go beyond our foundations, there are a number of ways these environments can be extended.
# Installing Additional Packages
Within all the environments on Katacoda, users have the correct permissions to install additional packages via Apt/Yum/NPM depending on the requirements.
# Running Docker Containers
For Ubuntu and CentOS based environment, Docker is pre-installed and available. Users have access to pull down additional Docker Images from the Docker Hub allowing them to use a rich array of technologies and versions without requiring additional Customizations from Katacoda.
# Background Scripts
Commands can be run automatically in the foreground and background when a scenario starts and when a step loads.
Running commands in the background can create a cleaner user experience by hiding noisy and confusing console output from the users. As they are running in the background, the scripts shouldn't prompt the user for input, such as confirmation when installing packages.
Learn how to implement this in the scenario at https://katacoda.com/scenario-examples/scenarios/run-commands-automatically
# Foreground Scripts
As with Background Scripts, scripts can be run automatically in the foreground allowing users to see the output. This can be useful for displaying progress about the environment configuration and blocking the user before they can continue successfully. For an improved user experience, scripts with a lot of output should be piped to /dev/null or be run in the background.
Learn how to implement this in the scenario at https://katacoda.com/scenario-examples/scenarios/run-commands-automatically
# Displaying Progress of Background Scripts
To provide the user with feedback on the progress of background scripts, we highly recommend the use of a progress script to provide the user with feedback that something is happening. An example can be found in the scenario at https://katacoda.com/scenario-examples/scenarios/displaying-progress-spinner.
These progress scripts can be run automatically in the foreground
# Uploading Files
Katacoda supports automatically uploading assets to scenarios. This is designed for configuration and short scripts.
Learn how to implement this in the scenario at https://katacoda.com/scenario-examples/scenarios/upload-assets