public static function factory($config = array())
    {
        $defaults = array(
            'scheme' => 'http',
            'om_classes' => array(
                'order' => 'Dzangocart\OM\Order',
                'sale' => 'Dzangocart\OM\Sale',
                'customer' => 'Dzangocart\OM\Customer',
                'address' => 'Dzangocart\OM\Address',
                'category' => 'Dzangocart\OM\Category'
            )
        );

        $required = array('api_url', 'token');
        $config = Collection::fromConfig($config, $defaults, $required);

        $client = new self($config->get('api_url'), $config);
        $description = ServiceDescription::factory(__DIR__ . '/dzangocart.json');
        $client->setDescription($description);

        return $client;
    }