avoid using ARGN for efficiency