public function setup(array $extracters)
    {
        foreach ($extracters as $extracter) {
            if (
                (false === ($extracter['reference'] instanceof TrackingParameterQueryExtracterInterface))
                && (false === ($extracter['reference'] instanceof TrackingParameterCookieExtracterInterface))
                && (false === ($extracter['reference'] instanceof TrackingParameterInitializerInterface))
            ) {
                throw new InvalidConfigurationException(sprintf(
                    'Invalid tracking parameter extracter "%s".',
                    $extracter['name']
                ));
            }

            $this->extracters[$extracter['name']] = $extracter['reference'];
        }
    }