Adding strategy type enum and a strategy factory.