more flexible args