oop: more flexible items, but got bugs with harvesting