We currently hardcode the item kind to be "value" or "buffer". Instead, we can implement a multiple-dispatch approach so that arbitrary item kinds can be implemented.