switch to native arg passing