Consider making this private.    It has private fields, so it shouldn't be built directly, and there is an interface it implements (which is what's returned by the constructor), so I don't think we get much by making it public.