my generic object pool