diff --git a/error_code.h b/error_code.h
index fc66ac9..5f3a2cb 100644
--- a/error_code.h
+++ b/error_code.h
@@ -5,56 +5,58 @@
 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_ERROR_CODE_H_
 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_ERROR_CODE_H_
 
+#include <ostream>
+
 namespace chromeos_update_engine {
 
 // Action exit codes.
-enum ErrorCode {
-  kErrorCodeSuccess = 0,
-  kErrorCodeError = 1,
-  kErrorCodeOmahaRequestError = 2,
-  kErrorCodeOmahaResponseHandlerError = 3,
-  kErrorCodeFilesystemCopierError = 4,
-  kErrorCodePostinstallRunnerError = 5,
-  kErrorCodePayloadMismatchedType = 6,
-  kErrorCodeInstallDeviceOpenError = 7,
-  kErrorCodeKernelDeviceOpenError = 8,
-  kErrorCodeDownloadTransferError = 9,
-  kErrorCodePayloadHashMismatchError = 10,
-  kErrorCodePayloadSizeMismatchError = 11,
-  kErrorCodeDownloadPayloadVerificationError = 12,
-  kErrorCodeDownloadNewPartitionInfoError = 13,
-  kErrorCodeDownloadWriteError = 14,
-  kErrorCodeNewRootfsVerificationError = 15,
-  kErrorCodeNewKernelVerificationError = 16,
-  kErrorCodeSignedDeltaPayloadExpectedError = 17,
-  kErrorCodeDownloadPayloadPubKeyVerificationError = 18,
-  kErrorCodePostinstallBootedFromFirmwareB = 19,
-  kErrorCodeDownloadStateInitializationError = 20,
-  kErrorCodeDownloadInvalidMetadataMagicString = 21,
-  kErrorCodeDownloadSignatureMissingInManifest = 22,
-  kErrorCodeDownloadManifestParseError = 23,
-  kErrorCodeDownloadMetadataSignatureError = 24,
-  kErrorCodeDownloadMetadataSignatureVerificationError = 25,
-  kErrorCodeDownloadMetadataSignatureMismatch = 26,
-  kErrorCodeDownloadOperationHashVerificationError = 27,
-  kErrorCodeDownloadOperationExecutionError = 28,
-  kErrorCodeDownloadOperationHashMismatch = 29,
-  kErrorCodeOmahaRequestEmptyResponseError = 30,
-  kErrorCodeOmahaRequestXMLParseError = 31,
-  kErrorCodeDownloadInvalidMetadataSize = 32,
-  kErrorCodeDownloadInvalidMetadataSignature = 33,
-  kErrorCodeOmahaResponseInvalid = 34,
-  kErrorCodeOmahaUpdateIgnoredPerPolicy = 35,
-  kErrorCodeOmahaUpdateDeferredPerPolicy = 36,
-  kErrorCodeOmahaErrorInHTTPResponse = 37,
-  kErrorCodeDownloadOperationHashMissingError = 38,
-  kErrorCodeDownloadMetadataSignatureMissingError = 39,
-  kErrorCodeOmahaUpdateDeferredForBackoff = 40,
-  kErrorCodePostinstallPowerwashError = 41,
-  kErrorCodeUpdateCanceledByChannelChange = 42,
-  kErrorCodePostinstallFirmwareRONotUpdatable = 43,
-  kErrorCodeUnsupportedMajorPayloadVersion = 44,
-  kErrorCodeUnsupportedMinorPayloadVersion = 45,
+enum class ErrorCode : int {
+  kSuccess = 0,
+  kError = 1,
+  kOmahaRequestError = 2,
+  kOmahaResponseHandlerError = 3,
+  kFilesystemCopierError = 4,
+  kPostinstallRunnerError = 5,
+  kPayloadMismatchedType = 6,
+  kInstallDeviceOpenError = 7,
+  kKernelDeviceOpenError = 8,
+  kDownloadTransferError = 9,
+  kPayloadHashMismatchError = 10,
+  kPayloadSizeMismatchError = 11,
+  kDownloadPayloadVerificationError = 12,
+  kDownloadNewPartitionInfoError = 13,
+  kDownloadWriteError = 14,
+  kNewRootfsVerificationError = 15,
+  kNewKernelVerificationError = 16,
+  kSignedDeltaPayloadExpectedError = 17,
+  kDownloadPayloadPubKeyVerificationError = 18,
+  kPostinstallBootedFromFirmwareB = 19,
+  kDownloadStateInitializationError = 20,
+  kDownloadInvalidMetadataMagicString = 21,
+  kDownloadSignatureMissingInManifest = 22,
+  kDownloadManifestParseError = 23,
+  kDownloadMetadataSignatureError = 24,
+  kDownloadMetadataSignatureVerificationError = 25,
+  kDownloadMetadataSignatureMismatch = 26,
+  kDownloadOperationHashVerificationError = 27,
+  kDownloadOperationExecutionError = 28,
+  kDownloadOperationHashMismatch = 29,
+  kOmahaRequestEmptyResponseError = 30,
+  kOmahaRequestXMLParseError = 31,
+  kDownloadInvalidMetadataSize = 32,
+  kDownloadInvalidMetadataSignature = 33,
+  kOmahaResponseInvalid = 34,
+  kOmahaUpdateIgnoredPerPolicy = 35,
+  kOmahaUpdateDeferredPerPolicy = 36,
+  kOmahaErrorInHTTPResponse = 37,
+  kDownloadOperationHashMissingError = 38,
+  kDownloadMetadataSignatureMissingError = 39,
+  kOmahaUpdateDeferredForBackoff = 40,
+  kPostinstallPowerwashError = 41,
+  kUpdateCanceledByChannelChange = 42,
+  kPostinstallFirmwareRONotUpdatable = 43,
+  kUnsupportedMajorPayloadVersion = 44,
+  kUnsupportedMinorPayloadVersion = 45,
 
   // VERY IMPORTANT! When adding new error codes:
   //
@@ -64,10 +66,10 @@
   //    build until this case is added.
 
   // Any code above this is sent to both Omaha and UMA as-is, except
-  // kErrorCodeOmahaErrorInHTTPResponse (see error code 2000 for more details).
+  // kOmahaErrorInHTTPResponse (see error code 2000 for more details).
   // Codes/flags below this line is sent only to Omaha and not to UMA.
 
-  // kErrorCodeUmaReportedMax is not an error code per se, it's just the count
+  // kUmaReportedMax is not an error code per se, it's just the count
   // of the number of enums above.  Add any new errors above this line if you
   // want them to show up on UMA. Stuff below this line will not be sent to UMA
   // but is used for other errors that are sent to Omaha. We don't assign any
@@ -75,38 +77,45 @@
   // one above and thus always represents the correct count of UMA metrics
   // buckets, even when new enums are added above this line in future. See
   // utils::SendErrorCodeToUma on how this enum is used.
-  kErrorCodeUmaReportedMax,
+  kUmaReportedMax,
 
   // use the 2xxx range to encode HTTP errors. These errors are available in
   // Dremel with the individual granularity. But for UMA purposes, all these
-  // errors are aggregated into one: kErrorCodeOmahaErrorInHTTPResponse.
-  kErrorCodeOmahaRequestHTTPResponseBase = 2000,  // + HTTP response code
+  // errors are aggregated into one: kOmahaErrorInHTTPResponse.
+  kOmahaRequestHTTPResponseBase = 2000,  // + HTTP response code
 
   // TODO(jaysri): Move out all the bit masks into separate constants
   // outside the enum as part of fixing bug 34369.
   // Bit flags. Remember to update the mask below for new bits.
 
   // Set if boot mode not normal.
-  kErrorCodeDevModeFlag        = 1 << 31,
+  // TODO(garnold) This is very debatable value to use, knowing that the
+  // underlying type is a signed int (often, 32-bit). However, at this point
+  // there are parts of the ecosystem that expect this to be a negative value,
+  // so we preserve this semantics. This should be reconsidered if/when we
+  // modify the implementation of ErrorCode into a properly encapsulated class.
+  kDevModeFlag = 1 << 31,
 
   // Set if resuming an interruped update.
-  kErrorCodeResumedFlag         = 1 << 30,
+  kResumedFlag = 1 << 30,
 
   // Set if using a dev/test image as opposed to an MP-signed image.
-  kErrorCodeTestImageFlag       = 1 << 29,
+  kTestImageFlag = 1 << 29,
 
   // Set if using devserver or Omaha sandbox (using crosh autest).
-  kErrorCodeTestOmahaUrlFlag    = 1 << 28,
+  kTestOmahaUrlFlag = 1 << 28,
 
   // Mask that indicates bit positions that are used to indicate special flags
   // that are embedded in the error code to provide additional context about
   // the system in which the error was encountered.
-  kErrorCodeSpecialFlags = (kErrorCodeDevModeFlag |
-                            kErrorCodeResumedFlag |
-                            kErrorCodeTestImageFlag |
-                            kErrorCodeTestOmahaUrlFlag)
+  kSpecialFlags = (kDevModeFlag | kResumedFlag | kTestImageFlag |
+                   kTestOmahaUrlFlag)
 };
 
+inline std::ostream& operator<<(std::ostream& os, ErrorCode val) {
+  return os << static_cast<int>(val);
+}
+
 }  // namespace chromeos_update_engine
 
 #endif  // CHROMEOS_PLATFORM_UPDATE_ENGINE_ERROR_CODE_H_
