moved component error reporting to a single function, and caught the last edge cases