Remove all switches and implement "basic" TypeFactory, not finished though
Extend the types into a dedicated factory and overall re-factoring