Types and classes, function, recursion