public function registerService($serviceName, ConfigObject $config, $overwrite = false)
    {
        /**
         * Check if service instance already exists
         */
        if ($this->registeredServices->keyExists($serviceName) && !$overwrite) {
            throw new ServiceManagerException(ServiceManagerException::SERVICE_NAME_ALREADY_EXISTS, [$serviceName]);
        }
        $this->registeredServices[$serviceName] = $config;

        if ($this->instantiatedServices->keyExists($serviceName) && $overwrite) {
            $this->instantiatedServices->removeKey($serviceName);
        }

        /**
         * Tagify service
         */
        foreach ($config->get('Tags', []) as $tag) {
            $tagServices = $this->taggedServices->key($tag, [], true);
            $tagServices[] = $serviceName;
            $this->taggedServices->key($tag, $tagServices);
        }

        return $this;
    }