This type checking version contains error types. Let me know what you think.