Refactor selection out ga since gp can also use it