docs: @Override
  	public void initialize(ConfigurableApplicationContext context) {
  		ConfigurableEnvironment env = context.getEnvironment();
  		String[] activeProfiles = env.getActiveProfiles();
  		if (activeProfiles == null || activeProfiles.length == 0){	// don't override settings in configuration files and command line argument
  			activeProfiles = chooser.getActiveProfiles();
  			if (activeProfiles != null && activeProfiles.length > 0){
  				env.setActiveProfiles(activeProfiles);
  				logger.info("Active profiles have been choosen as: " + Arrays.toString(activeProfiles));
  			}else{
  				logger.warn("No active profile has been choosen.");
  			}
  		}else{
  			logger.info("Active profiles had already been specified as: " + Arrays.toString(activeProfiles));
  		}
  		
  		// set additional properties
  		activeProfiles = env.getActiveProfiles();
  		if (activeProfiles != null && activeProfiles.length > 0){
  			String firstProfile = activeProfiles[0];				// the first one is the "main" one
  			MutablePropertySources propertySources = env.getPropertySources();
  			Map<String, Object> additionalProperties = new HashMap<String, Object>();
  			additionalProperties.put(FIRST_PROFILE_PLACEHOLDER_NAME, firstProfile);
  			System.setProperty(FIRST_PROFILE_PLACEHOLDER_NAME, firstProfile);
  			logger.info("Property (can be used as a placeholder) '{}' has been set to: {}", FIRST_PROFILE_PLACEHOLDER_NAME, firstProfile);
  
  			if (activeProfiles.length > 1){
  				String secondProfile = activeProfiles[1];
  				additionalProperties.put(SECOND_PROFILE_PLACEHOLDER_NAME, secondProfile);
  				System.setProperty(SECOND_PROFILE_PLACEHOLDER_NAME, secondProfile);
  				logger.info("Property (can be used as a placeholder) '{}' has been set to: {}", SECOND_PROFILE_PLACEHOLDER_NAME, secondProfile);
  			}
  			propertySources.addFirst(new MapPropertySource(PROPERTY_SOURCE_NAME, additionalProperties));
  		}
  	}