class ConfigurationFactory {

  public Configuration getConfiguration(Collection<Map<String, String>> configProperties) {
    Map<String, Map<String, String>> properties = new HashMap<>();
    Map<String, Map<String, Map<String, String>>> attributes = new HashMap<>();
    Configuration configuration = new Configuration(properties, attributes);

    if (configProperties != null) {
      for (Map<String, String> typeMap : configProperties) {
        //todo: can we have a different strategy for each type?
        ConfigurationStrategy strategy = decidePopulationStrategy(typeMap);
        for (Map.Entry<String, String> entry : typeMap.entrySet()) {
          String[] propertyNameTokens = entry.getKey().split("/");
          strategy.setConfiguration(configuration, propertyNameTokens, entry.getValue());
        }
      }
    }
    return configuration;
  }

}