Core: Turn init into a virtual signal
Add CoreFactory