conditionals
higher order functions
runtime polymorphism
lazy sequences
sequence comprehensions
creating functions