make primitive utilization attributes managable

Address issue #40. When implementing this, I found myself doing a lot of dumb copy&paste, and then got a bit carried away on refactoring the existing implementation before I realized I was no longer working on the issue at hand. But, I think the reduction in useless code and improvement in clarity is substantial, so I left it in.