factories and instances are now "injected"