public function registerComponents(Container $container)
    {
        $this->bindClient($container);

        $this->bindCommandBus($container);

        $container->singleton('Ordercloud\Support\ExceptionGenerators\ExceptionGeneratorService', function () use ($container)
        {
            return new ChainedExceptionGeneratorService($container, [
                'Ordercloud\Requests\Orders\Exceptions\OrderExceptionGenerator',
                'Ordercloud\Requests\Payments\Exceptions\PaymentExceptionGenerator',
                'Ordercloud\Requests\Exceptions\RequestExceptionGenerator', // Always chain default handler last
            ]);
        });

        $container->singleton('Ordercloud\Support\Parser');

        $container->singleton('Ordercloud\Services\UserService');
        $container->singleton('Ordercloud\Services\OrganisationService');

        $container->singleton('Ordercloud\Ordercloud', function () use ($container)
        {
            return new Ordercloud($container);
        });
    }