work on typechecker