use pooling to avoid garbage collections