add BasicPoolTemplate and PoolListener
add validation