some work on expressions and types