finished reimplementing useItem