protected function getItemPacker()
    {

        //look at the item model
        $itemModel = $this->itemService->getItemModel($this->item);
        if (is_null($itemModel)) {
            throw new common_exception_NoImplementation('No item model for item ' . $this->item->getUri());
        }

        //get the itemModel implementation for this model
        $impl = $this->itemService->getItemModelImplementation($itemModel);
        if (is_null($impl)) {
            throw new common_exception_NoImplementation('No implementation for model ' . $itemModel->getUri());
        }

        //then retrieve the packer class and instantiate it
        $packerClass = $impl->getPackerClass();
        if (is_null($packerClass) || get_parent_class($packerClass) !== 'oat\taoItems\model\pack\ItemPacker') {
            throw new common_exception_NoImplementation('The packer class seems to be not implemented');
        }

        return new $packerClass();
    }