reset focus after callback
move building and returning result to private function