half way through semantic checker