optimize type checking