public function publishAndPropagate(array $files = array(), $extension = null, $before = [])
    {

        $container            = $this->assetFactory->container($this->position);
        $applicationContainer = $this->assetFactory->container('antares/foundation::application');

        if (empty($files)) {
            return $container;
        }
        if (!is_null($extension)) {
            $this->extension = $extension;
        }

        foreach ($files as $file) {
            $fileRealPath = $file->getRealPath();

            if ($fileRealPath !== false) {
                $name      = $this->extension . DIRECTORY_SEPARATOR . $file->getRelativePathname();
                $published = $this->symlinker->publish($name, $fileRealPath);

                if (!in_array($file->getExtension(), ['css', 'js']) or $published === false) {
                    continue;
                }
            } else {
                $published = $file->getRelativePathname();
            }

            $basename        = str_replace('\\', '/', $published);
            $sluggedBaseName = str_slug($file->getBasename());

            if ($file->getExtension() === 'css') {
                $applicationContainer->style($sluggedBaseName, $basename);
            } else {
                $container->add($sluggedBaseName, $basename, [], $before);
            }
        }
        return $container;
    }