diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c
index ddfd336..5e4a9f7 100644
--- a/Modules/_hotshot.c
+++ b/Modules/_hotshot.c
@@ -844,38 +844,6 @@
 /* The workhorse:  the profiler callback function. */
 
 static int
-profiler_callback(ProfilerObject *self, PyFrameObject *frame, int what,
-                  PyObject *arg)
-{
-    int tdelta = -1;
-    int fileno;
-
-    if (self->frametimings)
-        tdelta = get_tdelta(self);
-    switch (what) {
-    case PyTrace_CALL:
-        fileno = get_fileno(self, frame->f_code);
-        if (fileno < 0)
-            return -1;
-        if (pack_enter(self, fileno, tdelta,
-                       frame->f_code->co_firstlineno) < 0)
-            return -1;
-        break;
-    case PyTrace_RETURN:
-        if (pack_exit(self, tdelta) < 0)
-            return -1;
-        break;
-    default:
-        /* should never get here */
-        break;
-    }
-    return 0;
-}
-
-
-/* Alternate callback when we want PyTrace_LINE events */
-
-static int
 tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what,
                 PyObject *arg)
 {
@@ -893,7 +861,7 @@
     case PyTrace_RETURN:
         return pack_exit(self, get_tdelta(self));
 
-    case PyTrace_LINE:
+    case PyTrace_LINE:  /* we only get these events if we asked for them */
         if (self->linetimings)
             return pack_lineno_tdelta(self, frame->f_lineno,
 				      get_tdelta(self));
@@ -987,7 +955,7 @@
     if (self->lineevents)
         PyEval_SetTrace((Py_tracefunc) tracer_callback, (PyObject *)self);
     else
-        PyEval_SetProfile((Py_tracefunc) profiler_callback, (PyObject *)self);
+        PyEval_SetProfile((Py_tracefunc) tracer_callback, (PyObject *)self);
 }
 
 static void
