public function __construct(array $config, CacheManager $cache, InitialGenerator $initialGenerator)
{
$this->shape = Arr::get($config, 'shape', 'circle');
$this->chars = Arr::get($config, 'chars', 2);
$this->availableBackgrounds = Arr::get($config, 'backgrounds', [$this->background]);
$this->availableForegrounds = Arr::get($config, 'foregrounds', [$this->foreground]);
$this->fonts = Arr::get($config, 'fonts', [1]);
$this->fontSize = Arr::get($config, 'fontSize', 32);
$this->width = Arr::get($config, 'width', 100);
$this->height = Arr::get($config, 'height', 100);
$this->ascii = Arr::get($config, 'ascii', false);
$this->borderSize = Arr::get($config, 'border.size');
$this->borderColor = Arr::get($config, 'border.color');
$this->cache = $cache;
$this->initialGenerator = $initialGenerator->setUppercase(Arr::get($config, 'uppercase'));
}