diff --git a/Include/traceback.h b/Include/traceback.h
index 659e994..6501600 100644
--- a/Include/traceback.h
+++ b/Include/traceback.h
@@ -5,9 +5,17 @@
 extern "C" {
 #endif
 
+struct _frame;
+
 /* Traceback interface */
 
-struct _frame;
+typedef struct _traceback {
+	PyObject_HEAD
+	struct _traceback *tb_next;
+	struct _frame *tb_frame;
+	int tb_lasti;
+	int tb_lineno;
+} PyTracebackObject;
 
 PyAPI_FUNC(int) PyTraceBack_Here(struct _frame *);
 PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *);
diff --git a/Misc/NEWS b/Misc/NEWS
index 728d485..c0e2afe 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@
 Core and builtins
 -----------------
 
+- Moved tracebackobject into traceback.h and renamed to PyTracebackObject
+
 - Optimized the byte coding for multiple assignments like "a,b=b,a" and
   "a,b,c=1,2,3".  Improves their speed by 25% to 30%.
 
diff --git a/Python/traceback.c b/Python/traceback.c
index 987013c..f40cfb4 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -7,16 +7,9 @@
 #include "frameobject.h"
 #include "structmember.h"
 #include "osdefs.h"
+#include "traceback.h"
 
-typedef struct _tracebackobject {
-	PyObject_HEAD
-	struct _tracebackobject *tb_next;
-	PyFrameObject *tb_frame;
-	int tb_lasti;
-	int tb_lineno;
-} tracebackobject;
-
-#define OFF(x) offsetof(tracebackobject, x)
+#define OFF(x) offsetof(PyTracebackObject, x)
 
 static struct memberlist tb_memberlist[] = {
 	{"tb_next",	T_OBJECT,	OFF(tb_next)},
@@ -27,13 +20,13 @@
 };
 
 static PyObject *
-tb_getattr(tracebackobject *tb, char *name)
+tb_getattr(PyTracebackObject *tb, char *name)
 {
 	return PyMember_Get((char *)tb, tb_memberlist, name);
 }
 
 static void
-tb_dealloc(tracebackobject *tb)
+tb_dealloc(PyTracebackObject *tb)
 {
 	PyObject_GC_UnTrack(tb);
 	Py_TRASHCAN_SAFE_BEGIN(tb)
@@ -44,7 +37,7 @@
 }
 
 static int
-tb_traverse(tracebackobject *tb, visitproc visit, void *arg)
+tb_traverse(PyTracebackObject *tb, visitproc visit, void *arg)
 {
 	int err = 0;
 	if (tb->tb_next) {
@@ -58,7 +51,7 @@
 }
 
 static void
-tb_clear(tracebackobject *tb)
+tb_clear(PyTracebackObject *tb)
 {
 	Py_XDECREF(tb->tb_next);
 	Py_XDECREF(tb->tb_frame);
@@ -70,7 +63,7 @@
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,
 	"traceback",
-	sizeof(tracebackobject),
+	sizeof(PyTracebackObject),
 	0,
 	(destructor)tb_dealloc, /*tp_dealloc*/
 	0,		/*tp_print*/
@@ -102,16 +95,16 @@
 	0,					/* tp_dict */
 };
 
-static tracebackobject *
-newtracebackobject(tracebackobject *next, PyFrameObject *frame)
+static PyTracebackObject *
+newtracebackobject(PyTracebackObject *next, PyFrameObject *frame)
 {
-	tracebackobject *tb;
+	PyTracebackObject *tb;
 	if ((next != NULL && !PyTraceBack_Check(next)) ||
 			frame == NULL || !PyFrame_Check(frame)) {
 		PyErr_BadInternalCall();
 		return NULL;
 	}
-	tb = PyObject_GC_New(tracebackobject, &PyTraceBack_Type);
+	tb = PyObject_GC_New(PyTracebackObject, &PyTraceBack_Type);
 	if (tb != NULL) {
 		Py_XINCREF(next);
 		tb->tb_next = next;
@@ -129,8 +122,8 @@
 PyTraceBack_Here(PyFrameObject *frame)
 {
 	PyThreadState *tstate = frame->f_tstate;
-	tracebackobject *oldtb = (tracebackobject *) tstate->curexc_traceback;
-	tracebackobject *tb = newtracebackobject(oldtb, frame);
+	PyTracebackObject *oldtb = (PyTracebackObject *) tstate->curexc_traceback;
+	PyTracebackObject *tb = newtracebackobject(oldtb, frame);
 	if (tb == NULL)
 		return -1;
 	tstate->curexc_traceback = (PyObject *)tb;
@@ -222,11 +215,11 @@
 }
 
 static int
-tb_printinternal(tracebackobject *tb, PyObject *f, int limit)
+tb_printinternal(PyTracebackObject *tb, PyObject *f, int limit)
 {
 	int err = 0;
 	int depth = 0;
-	tracebackobject *tb1 = tb;
+	PyTracebackObject *tb1 = tb;
 	while (tb1 != NULL) {
 		depth++;
 		tb1 = tb1->tb_next;
@@ -267,6 +260,6 @@
 	}
 	err = PyFile_WriteString("Traceback (most recent call last):\n", f);
 	if (!err)
-		err = tb_printinternal((tracebackobject *)v, f, limit);
+		err = tb_printinternal((PyTracebackObject *)v, f, limit);
 	return err;
 }
