modularized to call() function