arguments, return, exceptions, augmenting types, recursion, and scope