overload watch with an additional error_code parameter
add final to many classes