complete type checking