Because the core module consists almost excusivly of interfaces Factories play a vital role in how developers use the API.
Although the interfaces that are declared in core are implemented in
defaultcore you should not use classes in defaultcore directly. Instead you
should use factories.
But if you can't use defaultcore how can you get at the
implementations of factories that are in it?
The answer is the FactoryFinder in this package, read its documentation for details on how it works.