public function invoke($name, array $args)
    {
        $signature = $name . ':' . serialize($args);

        if (!isset($this->cache[$signature])) {
            $this->cache[$signature] = call_user_func_array(array($this->repository, $name), $args);
        }

        return $this->cache[$signature];
    }