removed findBest() method and renamed findParents to selectParents
some refactoring, allowing for using different selection functions, named params in constructor