variable pool implementation