this function signature works nicely, actually