public function load($ident, $useCache = true, $reloadObj = false)
    {
        if (!$useCache) {
            return $this->loadFromSource($ident);
        }

        $cacheKey  = $this->cacheKey($ident);
        $cacheItem = $this->cachePool->getItem($cacheKey);

        if (!$reloadObj) {
            if ($cacheItem->isHit()) {
                $data = $cacheItem->get();
                $obj  = $this->factory->create($this->objType);
                $obj->setData($data);

                return $obj;
            }
        }

        $obj  = $this->loadFromSource($ident);
        $data = ($obj->id() ? $obj->data() : []);
        $cacheItem->set($data);
        $this->cachePool->save($cacheItem);

        return $obj;
    }