Addition to factory pattern
Implement strategy pattern (i think)