testable documentation, better error messages