public function processXcdr(XcdrListenerInterface $listener, array$options = array())
    {
        $xcdrRequest = new XcdrRequest($listener, $options);
        $schema = $xcdrRequest->getSchema();

        ini_set("soap.wsdl_cache_enabled", "0");

        $soapServer = new \SoapServer(null, array(
            'uri' => $schema,
            'soap_version' => SOAP_1_2,
        ));

        $soapServer->setObject($xcdrRequest);

        try {
            ob_start();
            $soapServer->handle();
        } catch (\Exception $e) {
            return array(
                'status' => 'error',
                'type' => 'soap_fault',
                'code' => $e->getCode(),
                'message' => $e->getMessage(),
                'class' => get_class($this)
            );
        }

        $result = $this->filterResponse(ob_get_clean(), $schema, 'xcdr');

        return array(
            'status' => 'success',
            'result' => $result
        );
    }