implement type checking