added better object pooling architecture