requires Item class