protected function factory($class, $path, $arguments = null)
    {
        // get required file
        include_once $path.'Service'.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $class).'.php';

        // create and return a fresh instance
        if ($arguments) {
            return self::instantiate($class, $arguments);
        } else {
            return new $class();
        }
    }