diff --git a/evol/__init__.py b/evol/__init__.py
index 6746f75..9f44276 100644
--- a/evol/__init__.py
+++ b/evol/__init__.py
@@ -119,4 +119,4 @@ from .population import Population, ContestPopulation
 from .evolution import Evolution
 from .logger import BaseLogger
 
-__version__ = "0.5.2"
+__version__ = "0.5.3"
diff --git a/evol/population.py b/evol/population.py
index 9a7aedd..8e989f5 100644
--- a/evol/population.py
+++ b/evol/population.py
@@ -207,7 +207,7 @@ class BasePopulation(metaclass=ABCMeta):
         :param kwargs: Arguments to pass to the mutation function.
         :return: self
         """
-        elite_fitness = self.current_best if elitist else None
+        elite_fitness: Optional[float] = self.current_best.fitness if elitist else None
         for individual in self.individuals:
             if elite_fitness is None or individual.fitness != elite_fitness:
                 individual.mutate(mutate_function, probability=probability, **kwargs)

diff --git a/tests/test_population.py b/tests/test_population.py
index 0e441b9..a9b772c 100644
--- a/tests/test_population.py
+++ b/tests/test_population.py
@@ -244,7 +244,7 @@ class TestPopulationMutate:
     def test_mutate_elitist(self):
         pop = Population([1, 1, 3], eval_function=lambda x: x).evaluate().mutate(lambda x: x + 1, elitist=True)
         for chromosome in pop.chromosomes:
-            assert chromosome > 1
+            assert 1 < chromosome <= 3
         assert len(pop) == 3
 
 

Not sure if elitism works
I put elitist to True in my mutation step, but it did not work when looking at the source code it looks like it will not work.

`
        elite_fitness = self.current_best if elitist else None
        for individual in self.individuals:
            if elite_fitness is None or individual.fitness != elite_fitness:
                individual.mutate(mutate_function, probability=probability, **kwargs)
        return self
`

elite_fitness is set as an 'individual' object, then in the if statement it is compared to the floating point fitness instead of the actual object. Therefore individual.fitness will never equal elite_fitness and the current_best is not skipped over like it should be.
tests/test_population.py::TestPopulationMutate::test_mutate_elitist
tests/test_population.py::TestPopulationSimple::test_filter_works tests/test_population.py::TestPopulationSimple::test_population_init tests/test_population.py::TestPopulationSimple::test_population_generate tests/test_population.py::TestPopulationSimple::test_is_evaluated[0] tests/test_population.py::TestPopulationSimple::test_is_evaluated[1] tests/test_population.py::TestPopulationCopy::test_population_copy[0] tests/test_population.py::TestPopulationCopy::test_population_copy[1] tests/test_population.py::TestPopulationCopy::test_population_is_evaluated[0] tests/test_population.py::TestPopulationCopy::test_population_is_evaluated[1] tests/test_population.py::TestPopulationEvaluate::test_individuals_are_not_initially_evaluated[0] tests/test_population.py::TestPopulationEvaluate::test_individuals_are_not_initially_evaluated[1] tests/test_population.py::TestPopulationEvaluate::test_evaluate_lambda tests/test_population.py::TestPopulationEvaluate::test_evaluate_func tests/test_population.py::TestPopulationEvaluate::test_evaluate_lazy[0] tests/test_population.py::TestPopulationEvaluate::test_evaluate_lazy[1] tests/test_population.py::TestPopulationSurvive::test_survive_n_works tests/test_population.py::TestPopulationSurvive::test_survive_p_works tests/test_population.py::TestPopulationSurvive::test_survive_n_and_p_works tests/test_population.py::TestPopulationSurvive::test_breed_increases_generation[0] tests/test_population.py::TestPopulationSurvive::test_breed_increases_generation[1] tests/test_population.py::TestPopulationSurvive::test_survive_throws_correct_errors[0] tests/test_population.py::TestPopulationSurvive::test_survive_throws_correct_errors[1] tests/test_population.py::TestPopulationBreed::test_breed_amount_works tests/test_population.py::TestPopulationBreed::test_breed_works_with_kwargs tests/test_population.py::TestPopulationBreed::test_breed_raises_with_multiple_values_for_kwarg tests/test_population.py::TestPopulationMutate::test_mutate_lambda tests/test_population.py::TestPopulationMutate::test_mutate_inplace tests/test_population.py::TestPopulationMutate::test_mutate_func tests/test_population.py::TestPopulationMutate::test_mutate_probability tests/test_population.py::TestPopulationMutate::test_mutate_zero_probability tests/test_population.py::TestPopulationMutate::test_mutate_func_kwargs tests/test_population.py::TestPopulationWeights::test_weights tests/test_population.py::TestPopulationBest::test_current_best tests/test_population.py::TestPopulationBest::test_current_worst tests/test_population.py::TestPopulationBest::test_mutate_resets tests/test_population.py::TestPopulationBest::test_documented_best tests/test_population.py::TestPopulationIslands::test_groups[1] tests/test_population.py::TestPopulationIslands::test_groups[2] tests/test_population.py::TestPopulationIslands::test_groups[3] tests/test_population.py::TestPopulationIslands::test_groups[4] tests/test_population.py::TestPopulationIslands::test_no_groups tests/test_population.py::TestPopulationIslands::test_empty_group tests/test_population.py::TestPopulationIslands::test_invalid_group[result0-TypeError] tests/test_population.py::TestPopulationIslands::test_invalid_group[result1-TypeError] tests/test_population.py::TestPopulationIslands::test_invalid_group[result2-IndexError] tests/test_population.py::TestPopulationIslands::test_not_evaluated tests/test_population.py::TestPopulationIslands::test_combine tests/test_population.py::TestPopulationIslands::test_combine_nothing tests/test_population.py::TestContest::test_assign_score tests/test_population.py::TestContest::test_generate_n_contests[2-1] tests/test_population.py::TestContest::test_generate_n_contests[5-1] tests/test_population.py::TestContest::test_generate_n_contests[7-1] tests/test_population.py::TestContest::test_generate_n_contests[2-5] tests/test_population.py::TestContest::test_generate_n_contests[5-4] tests/test_population.py::TestContest::test_generate_n_contests[3-3] tests/test_population.py::TestContestPopulation::test_init tests/test_population.py::TestContestPopulationBest::test_no_documented