Rework the error framework

Signed-off-by: Davide Madrisan <davide.madrisan@gmail.com>