start, stop, and test as functor