now accepts 1+ arguments