implemented pooling plus failover