Tied the factory and generic initialisation, not enough for a working example though