should use references for args