I could do it with more static methods if that is simpler.