allow non-literals for 2nd and 3rd argument