diff --git a/src/mark_sweep.cc b/src/mark_sweep.cc
index a2f1a56..b3d21a3 100644
--- a/src/mark_sweep.cc
+++ b/src/mark_sweep.cc
@@ -6,6 +6,7 @@
 #include <vector>
 
 #include "class_loader.h"
+#include "dex_cache.h"
 #include "heap.h"
 #include "indirect_reference_table.h"
 #include "intern_table.h"
@@ -148,6 +149,7 @@
   Space* space = static_cast<Space*>(arg);
   for (size_t i = 0; i < num_ptrs; ++i) {
     Object* obj = static_cast<Object*>(ptrs[i]);
+    Heap::RecordFree(space, obj);
     space->Free(obj);
   }
   // TODO, unlock heap if concurrent
@@ -219,13 +221,6 @@
   }
 }
 
-void MarkSweep::ScanInterfaces(const Class* klass) {
-  DCHECK(klass != NULL);
-  for (size_t i = 0; i < klass->NumInterfaces(); ++i) {
-    MarkObject(klass->GetInterface(i));
-  }
-}
-
 // Scans the header, static field references, and interface pointers
 // of a class object.
 void MarkSweep::ScanClass(const Object* obj) {
@@ -233,6 +228,10 @@
   DCHECK(obj->IsClass());
   const Class* klass = obj->AsClass();
   MarkObject(klass->GetClass());
+  ScanInstanceFields(obj);
+  MarkObject(klass->GetDescriptor());
+  MarkObject(klass->GetDexCache());
+  MarkObject(klass->GetVerifyErrorClass());
   if (klass->IsArrayClass()) {
     MarkObject(klass->GetComponentType());
   }
@@ -240,13 +239,14 @@
     MarkObject(klass->GetSuperClass());
   }
   MarkObject(klass->GetClassLoader());
-  ScanInstanceFields(obj);
-  ScanStaticFields(klass);
-  // TODO: scan methods
-  // TODO: scan instance fields
   if (klass->IsLoaded()) {
-    ScanInterfaces(klass);
+    MarkObject(klass->GetInterfaces());
+    MarkObject(klass->GetDirectMethods());
+    MarkObject(klass->GetVirtualMethods());
+    MarkObject(klass->GetIFields());
+    MarkObject(klass->GetSFields());
   }
+  ScanStaticFields(klass);
 }
 
 // Scans the header of all array objects.  If the array object is
