updated to handle "rest" arguments (...)