Completely refactored ItemDefinition