type of variables initialized with nil should be explicitly specified
treat if-no-else differently with if-else
type checked if-expression and if-else expression