refactor, primitiveattributeproducer