finished learners.py