Resolve circular dependencies, everything as a factory
Beginnings of a demo