public function createNewTemplateObject($_type, $_ref = null)
    {
        $_cls = $this->getTemplateObjectClassName($_type);
        $stack_name = !is_null($_ref) ? $_ref : $_cls;

        if (class_exists($_cls)) {
            try {
                $_tpl_object = new $_cls($this);
            } catch (\Exception $e) {
                throw new \RuntimeException(
                    sprintf('An error occurred while trying to create Template Object "%s"!', $_cls)
                );
            }
            if (!($_tpl_object instanceof \TemplateEngine\TemplateObject\Abstracts\AbstractTemplateObject)) {
                throw new \DomainException(
                    sprintf('A Template Object must extends the "\TemplateEngine\TemplateObject\Abstracts\AbstractTemplateObject" class (got "%s")!', $_cls)
                );
            } else {
                $this->registry->setEntry($stack_name, $_tpl_object, 'template_objects');
            }
        } else {
            throw new \RuntimeException(
                sprintf('Template Object for type "%s" doesn\'t exist!', $_type)
            );
        }
    }