finished higher order functions
finished runtime polymorphism