added GA
a bit of refactoring
a bit of refactoring