add toString method
support custom argument indices