Going back to having item classes to avoid using reflection.