make errors more extensible