added support for up to three arguments and named parameter arguments