/**
  * @param ServiceLocatorInterface|ServiceManager $serviceLocator
  * @return mixed
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $config = $serviceLocator->get('Configuration');
     $serviceConfig = new Config(isset($config['domain_services']) ? $config['domain_services'] : array());
     $domainServiceFactory = new ServiceManager($serviceConfig);
     $serviceLocator->addPeeringServiceManager($domainServiceFactory);
     $domainServiceFactory->addInitializer(function ($instance) use($serviceLocator) {
         if ($instance instanceof ServiceLocatorAwareInterface) {
             $instance->setServiceLocator($serviceLocator->get('Zend\\ServiceManager\\ServiceLocatorInterface'));
         }
         if ($instance instanceof EventManagerAwareInterface) {
             $instance->setEventManager($serviceLocator->get('EventManager'));
         }
         if ($instance instanceof EntityManagerAwareInterface) {
             try {
                 $instance->setEntityManager($serviceLocator->get('EntityManager'));
             } catch (\Zend\ServiceManager\Exception\ServiceNotFoundException $e) {
                 // no entitymanager set
                 // TODO: log
             }
         }
     });
     return $domainServiceFactory;
 }