Shard build(Config config) throws IOException {
            NestedShard root = new NestedShard();

            for (Map.Entry<String, ConfigValue> entry : config.root().entrySet()) {
                String key = entry.getKey();

                Shard shard = EMPTY_SHARD;

                if (ConfigValueType.STRING.equals(entry.getValue().valueType())) {
                    List<Schema.Player> players = this.createList(config.getString(key));
                    shard = new LeafShard(players);
                }

                if (ConfigValueType.OBJECT.equals(entry.getValue().valueType())) {
                    shard = this.build( config.getConfig(key));
                }

                root.add(key,shard);
            }

            return root;
        }