public function getCacheFrontend() {
		if ($this->_cacheFrontendWrapper === null) {
			// Try the personal frontend for the service
			if ($this instanceof LocatorAwareInterface && $this->hasLocator()) {
				$locator   = $this->getLocator();
				$serviceId = $this->getCacheFrontendServiceId();
				
				if ($locator->has($serviceId)) {
					$this->_cacheFrontendWrapper = $locator->get($serviceId);
					return $this->_cacheFrontendWrapper;
				}
			}
			
			// Try to create through a factory
			if ($this->hasCacheFrontendFactory() && method_exists($this, 'getServiceName')) {
				$this->_cacheFrontendWrapper = $this->getCacheFrontendFactory()->createWrapper($this->getServiceName());
				return $this->_cacheFrontendWrapper;
			}
			
			throw new NoFrontend('Unable to provide the cache frontend');
		}
		
		return $this->_cacheFrontendWrapper;
	}