split interface, add pool
add pool_test & fix test