add object pool implementation