Major refactoring to run tests with different versions