adjusted to take args object (named arguments)