Reorganize algorithm structure
Avoid calculating fitness twice
Rewrite everything to avoid maps and sets