public function createService(ServiceLocatorInterface $serviceLocator)
    {
        $config = $serviceLocator->get('Config');
        $config = empty($config['valu_so']) ? [] : $config['valu_so'];
        
        $annotationBuilder = new AnnotationBuilder();
        
        // Attach custom annotations
        if (!empty($config['annotations'])) {
            $parser = new Parser\DoctrineAnnotationParser();
            
            foreach($config['annotations'] as $name => $class){
                $parser->registerAnnotation($class);
            }
            
            $annotationBuilder->getAnnotationManager()->attach($parser);
        }
        
        // Attach listeners for custom annotations
        if (!empty($config['annotation_listeners'])) {
            EventManagerConfigurator::configure(
                $annotationBuilder->getEventManager(), 
                $serviceLocator, 
                $config['annotation_listeners']);
        }
        
        return $annotationBuilder;
    }