static {
    config = new Utf8Properties();
    mediaProperties = new Utf8Properties();
    profiles = new Utf8Properties();

    allProps = new Hashtable<String, Utf8Properties>();

    InputStream f = null;

    try {
      // first, we load the general Config
      URL url = PropertiesLoader.class.getResource("Config.properties");
      f = url.openStream();
      config.load(f);

      // the media associated to each property
      url = PropertiesLoader.class.getResource(config.getProperty("media"));
      f = url.openStream();
      mediaProperties.load(f);

      // profiles
      url = PropertiesLoader.class.getResource(config.getProperty("profilesProperties"));

      f = url.openStream();
      profiles.load(f);

      // Load the default profile
      String defaultProfile = config.getProperty("defaultProfile");
      String defaultPath = (String) profiles.get(defaultProfile);
      DEFAULT_PROFILE = loadProfile(defaultProfile, defaultPath);

      if (Util.onDebug) {
        System.out.println("Default profile (" + defaultProfile + ") loaded");
      }
    } catch (Exception e) {
      System.err.println(PropertiesLoader.class + ": Error while loading default config");
      e.printStackTrace();
    } finally {
      try {
        if (f != null) {
          f.close();
          f = null;
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
  /**
   * Loads our CSS profile.
   *
   * @throws IOException if profile loading fails
   */
  private static void loadAptanaCSSProfile() {
    InputStream configStream = CSSValidator.class.getResourceAsStream(CONFIG_FILE);
    InputStream profilesStream = CSSValidator.class.getResourceAsStream(PROFILES_CONFIG_FILE);

    try {
      // loads our config
      PropertiesLoader.config.load(configStream);

      // loads our profile
      Utf8Properties profiles = new Utf8Properties();
      profiles.load(profilesStream);
      // a hack, but no other way since PropertiesLoader provides no public access to stored
      // profiles
      Field field = PropertiesLoader.class.getDeclaredField("profiles"); // $NON-NLS-1$
      field.setAccessible(true);
      field.set(null, profiles);
    } catch (Exception e) {
      IdeLog.logError(CSSPlugin.getDefault(), Messages.CSSValidator_ERR_FailToLoadProfile, e);
    } finally {
      try {
        configStream.close();
      } catch (IOException e) {
      }
      try {
        profilesStream.close();
      } catch (IOException e) {
      }
    }
  }
  private static Utf8Properties loadProfile(String profile, String profilePath) throws IOException {
    Utf8Properties result = new Utf8Properties();
    InputStream f = null;

    URL url = null;

    // the url of the properties file of the selected profile
    if (profilePath != null) {
      url = PropertiesLoader.class.getResource(profilePath);
    }

    f = url.openStream();

    // we load the properties
    result.load(f);
    // we add the profile to the profiles Hashtable
    allProps.put(new String(profile), result);

    if (Util.onDebug) {
      System.out.println(profile + " profile loaded");
    }
    return result;
  }