public function setConfig(array $config)
    {
        foreach ($config as $type => $value) {
            $property = ucwords(str_replace('-', ' ', $type));
            $property = lcfirst(str_replace(' ', '', $property));

            $method = 'set' . ucfirst($property);

            if (method_exists($this, $method)) {
                $this->{$method}($value);
            } else {
                throw new \Parable\ORM\Exception(
                    "Tried to set non-existing property '{$property}' with value '{$value}' on " . get_class($this)
                );
            }
        }
        return $this;
    }