all tests pass with basic strategy pattern implementation