did a lot of refactoring work to get back where I started. at least types of Provider now use common super constructor...