factored out class Item