Refactored  to a abstract Item.