diff --git a/compiler/driver/compiler_callbacks_impl.h b/compiler/driver/compiler_callbacks_impl.h
index fd2cd4a..ed6a925 100644
--- a/compiler/driver/compiler_callbacks_impl.h
+++ b/compiler/driver/compiler_callbacks_impl.h
@@ -23,7 +23,7 @@
 
 namespace art {
 
-class CompilerCallbacksImpl : public CompilerCallbacks {
+class CompilerCallbacksImpl FINAL : public CompilerCallbacks {
   public:
     CompilerCallbacksImpl(VerificationResults* verification_results,
                           DexFileToMethodInlinerMap* method_inliner_map)
@@ -33,10 +33,10 @@
       CHECK(method_inliner_map != nullptr);
     }
 
-    virtual ~CompilerCallbacksImpl() { }
+    ~CompilerCallbacksImpl() { }
 
-    virtual bool MethodVerified(verifier::MethodVerifier* verifier)
-        SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
+    bool MethodVerified(verifier::MethodVerifier* verifier)
+        SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) OVERRIDE {
       bool result = verification_results_->ProcessVerifiedMethod(verifier);
       if (result) {
         MethodReference ref = verifier->GetMethodReference();
@@ -45,7 +45,7 @@
       }
       return result;
     }
-    virtual void ClassRejected(ClassReference ref) {
+    void ClassRejected(ClassReference ref) OVERRIDE {
       verification_results_->AddRejectedClass(ref);
     }
 
diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc
index 841a478..915c415 100644
--- a/oatdump/oatdump.cc
+++ b/oatdump/oatdump.cc
@@ -26,7 +26,6 @@
 #include "base/unix_file/fd_file.h"
 #include "class_linker.h"
 #include "class_linker-inl.h"
-#include "compiler_callbacks.h"
 #include "dex_file-inl.h"
 #include "dex_instruction.h"
 #include "disassembler.h"
@@ -43,6 +42,7 @@
 #include "mirror/class-inl.h"
 #include "mirror/object-inl.h"
 #include "mirror/object_array-inl.h"
+#include "noop_compiler_callbacks.h"
 #include "oat.h"
 #include "object_utils.h"
 #include "os.h"
@@ -1528,13 +1528,8 @@
   std::string boot_oat_option;
 
   // We are more like a compiler than a run-time. We don't want to execute code.
-  // TODO: Replace with NoopCompilerCallbacks.
-  struct OatDumpCompilerCallbacks : CompilerCallbacks {
-    virtual bool MethodVerified(verifier::MethodVerifier* /*verifier*/) { return true; }
-    virtual void ClassRejected(ClassReference /*ref*/) { }
-  } callbacks;
-  options.push_back(std::make_pair("compilercallbacks",
-                                   static_cast<CompilerCallbacks*>(&callbacks)));
+  NoopCompilerCallbacks callbacks;
+  options.push_back(std::make_pair("compilercallbacks", &callbacks));
 
   if (boot_image_filename != NULL) {
     boot_image_option += "-Ximage:";
diff --git a/runtime/common_runtime_test.h b/runtime/common_runtime_test.h
index cef0703..cfe808c 100644
--- a/runtime/common_runtime_test.h
+++ b/runtime/common_runtime_test.h
@@ -31,7 +31,6 @@
 #include "base/stringprintf.h"
 #include "base/unix_file/fd_file.h"
 #include "class_linker.h"
-#include "compiler_callbacks.h"
 #include "dex_file-inl.h"
 #include "entrypoints/entrypoint_utils.h"
 #include "gc/heap.h"
@@ -39,6 +38,7 @@
 #include "instruction_set.h"
 #include "interpreter/interpreter.h"
 #include "mirror/class_loader.h"
+#include "noop_compiler_callbacks.h"
 #include "oat_file.h"
 #include "object_utils.h"
 #include "os.h"
@@ -94,16 +94,6 @@
   UniquePtr<File> file_;
 };
 
-class NoopCompilerCallbacks : public CompilerCallbacks {
- public:
-  NoopCompilerCallbacks() {}
-  virtual ~NoopCompilerCallbacks() {}
-  virtual bool MethodVerified(verifier::MethodVerifier* verifier) {
-    return true;
-  }
-  virtual void ClassRejected(ClassReference ref) {}
-};
-
 class CommonRuntimeTest : public testing::Test {
  public:
   static void SetEnvironmentVariables(std::string& android_data) {
diff --git a/runtime/noop_compiler_callbacks.h b/runtime/noop_compiler_callbacks.h
new file mode 100644
index 0000000..702b2e1
--- /dev/null
+++ b/runtime/noop_compiler_callbacks.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ART_RUNTIME_NOOP_COMPILER_CALLBACKS_H_
+#define ART_RUNTIME_NOOP_COMPILER_CALLBACKS_H_
+
+#include "compiler_callbacks.h"
+
+namespace art {
+
+class NoopCompilerCallbacks FINAL : public CompilerCallbacks {
+ public:
+  NoopCompilerCallbacks() {}
+  ~NoopCompilerCallbacks() {}
+  bool MethodVerified(verifier::MethodVerifier* verifier) OVERRIDE {
+    return true;
+  }
+  void ClassRejected(ClassReference ref) OVERRIDE {}
+};
+
+}  // namespace art
+
+#endif  // ART_RUNTIME_NOOP_COMPILER_CALLBACKS_H_
