def does not need 'search' to be passed on - that's a ref to the object the %opts are passed to...