set abstract function