refactoring in GAImplementation