private function addClientsSection()
    {
        $tree = new TreeBuilder();
        $node = $tree->root('pools');

        $node
            ->requiresAtLeastOneElement()
            ->useAttributeAsKey('name')
            ->prototype('array')
                ->children()
                    ->arrayNode('servers')
                        ->requiresAtLeastOneElement()
                        ->prototype('array')
                            ->children()
                                ->scalarNode('host')
                                	->cannotBeEmpty()
                                	->isRequired()
                               	->end()
                                ->scalarNode('tcp_port')
                                    ->defaultValue(11211)
                                    ->validate()
                                    ->ifTrue(function ($v) { return !is_numeric($v); })
                                        ->thenInvalid('port must be numeric')
                                    ->end()
                                ->end()
                                ->scalarNode('udp_port')
                                    ->defaultValue(0)
                                    ->validate()
                                    ->ifTrue(function ($v) { return !is_numeric($v); })
                                        ->thenInvalid('port must be numeric')
                                    ->end()
                                ->end()
                                ->booleanNode('persistent')
                                	->defaultTrue()
                                ->end()
                                ->scalarNode('weight')
                                    ->defaultValue(1)
                                    ->validate()
                                    ->ifTrue(function ($v) { return !is_numeric($v); })
                                        ->thenInvalid('weight must be numeric')
                                    ->end()
                                ->end()
                                ->scalarNode('timeout')
	                                ->defaultValue(1)
	                                ->validate()
	                                ->ifTrue(function ($v) { return !is_numeric($v); })
	                                	->thenInvalid('timeout must be numeric')
	                                ->end()
                                ->end()
                                ->scalarNode('retry_interval')
	                                ->defaultValue(15)
	                                ->validate()
	                                ->ifTrue(function ($v) { return !is_numeric($v); })
	                                	->thenInvalid('retry_interval must be numeric')
	                                ->end()
                                ->end()
                        	->end()
                        ->end()
                    ->end()
                    ->append($this->addMemcacheOptionsSection())
                ->end()
            ->end()
        ->end();

        return $node;
    }