refactored Error to have discrete levels