public function replace(
        $hookName,
        $function_to_replace,
        $callable,
        $priority = 10,
        $accepted_args = 1,
        $create = true
    ) {
        $hookName = $this->sanitize($hookName);
        if (!$hookName) {
            throw new \Exception("Invalid Hook Name Specified", E_ERROR);
        }

        if (!is_callable($callable)) {
            throw new \Exception("Invalid Hook Callable Specified", E_ERROR);
        }

        if (($has = $this->has($hookName, $function_to_replace)) || $create) {
            $has && $this->remove($hookName, $function_to_replace);
            // add hooks first
            return $this->add($hookName, $callable, $priority, $accepted_args);
        }

        return false;
    }