Pool<T> class