Explained type-checking
better type errors