reimplementing InventoryHook