separated environmental issues from the typechecker code, so that we can reuse environment inside interpreter