abstract function caller