diff --git a/Include/Python.h b/Include/Python.h
index f89f3e7..b994401 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -54,6 +54,8 @@
 
 #include "pyport.h"
 
+#include "pymem.h"
+
 #include "object.h"
 #include "objimpl.h"
 
diff --git a/Include/mymalloc.h b/Include/mymalloc.h
index 2af58e4..8dadb66 100644
--- a/Include/mymalloc.h
+++ b/Include/mymalloc.h
@@ -1,5 +1,3 @@
-#ifndef Py_MYMALLOC_H
-#define Py_MYMALLOC_H
 /***********************************************************
 Copyright (c) 2000, BeOpen.com.
 Copyright (c) 1995-2000, Corporation for National Research Initiatives.
@@ -15,6 +13,9 @@
 USE "pyport.h" INSTEAD
 ***************************************/
 
+#ifndef Py_MYMALLOC_H
+#define Py_MYMALLOC_H
+
 /* Lowest-level memory allocation interface */
 
 #define ANY void /* For API compatibility only. Obsolete, do not use. */
diff --git a/Include/mymath.h b/Include/mymath.h
index 1bfd6dd..27f301d 100644
--- a/Include/mymath.h
+++ b/Include/mymath.h
@@ -1,3 +1,13 @@
+/***********************************************************
+Copyright (c) 2000, BeOpen.com.
+Copyright (c) 1995-2000, Corporation for National Research Initiatives.
+Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
+All rights reserved.
+
+See the file "Misc/COPYRIGHT" for information on usage and
+redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+******************************************************************/
+
 /***************************************
 THIS FILE IS OBSOLETE
 USE "pyport.h" INSTEAD
diff --git a/Include/myproto.h b/Include/myproto.h
index 94be8df..5d25d2c 100644
--- a/Include/myproto.h
+++ b/Include/myproto.h
@@ -1,9 +1,3 @@
-#ifndef Py_PROTO_H
-#define Py_PROTO_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 /***********************************************************
 Copyright (c) 2000, BeOpen.com.
 Copyright (c) 1995-2000, Corporation for National Research Initiatives.
@@ -19,6 +13,12 @@
 DON'T USE Py_PROTO or Py_FPROTO anymore.
 ***************************************/
 
+#ifndef Py_PROTO_H
+#define Py_PROTO_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifdef HAVE_PROTOTYPES
 #define Py_PROTO(x) x
 #else
diff --git a/Include/myselect.h b/Include/myselect.h
index 53e924d..3562af8 100644
--- a/Include/myselect.h
+++ b/Include/myselect.h
@@ -1,9 +1,3 @@
-#ifndef Py_MYSELECT_H
-#define Py_MYSELECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 /***********************************************************
 Copyright (c) 2000, BeOpen.com.
 Copyright (c) 1995-2000, Corporation for National Research Initiatives.
@@ -19,6 +13,12 @@
 USE "pyport.h" INSTEAD
 ***************************************/
 
+#ifndef Py_MYSELECT_H
+#define Py_MYSELECT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Include file for users of select() */
 
 /* NB caller must include <sys/types.h> */
diff --git a/Include/mytime.h b/Include/mytime.h
index bfad575..07a2480 100644
--- a/Include/mytime.h
+++ b/Include/mytime.h
@@ -1,9 +1,3 @@
-#ifndef Py_MYTIME_H
-#define Py_MYTIME_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 /***********************************************************
 Copyright (c) 2000, BeOpen.com.
 Copyright (c) 1995-2000, Corporation for National Research Initiatives.
@@ -19,6 +13,12 @@
 USE "pyport.h" INSTEAD
 ***************************************/
 
+#ifndef Py_MYTIME_H
+#define Py_MYTIME_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Include file instead of <time.h> and/or <sys/time.h> */
 
 #ifdef TIME_WITH_SYS_TIME
diff --git a/Include/objimpl.h b/Include/objimpl.h
index 3c0c7fc..0fd813d 100644
--- a/Include/objimpl.h
+++ b/Include/objimpl.h
@@ -10,12 +10,13 @@
 
 #ifndef Py_OBJIMPL_H
 #define Py_OBJIMPL_H
+
+#include "pymem.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#include "pyport.h"
-
 /*
 Functions and macros for modules that implement new object types.
 You must first include "object.h".
diff --git a/Include/pgenheaders.h b/Include/pgenheaders.h
index 15e9861..0b2e4ce 100644
--- a/Include/pgenheaders.h
+++ b/Include/pgenheaders.h
@@ -30,7 +30,7 @@
 #include <stdlib.h>
 #endif
 
-#include "pyport.h"
+#include "pymem.h"
 
 #include "pydebug.h"
 
diff --git a/Include/pymem.h b/Include/pymem.h
new file mode 100644
index 0000000..adcc739
--- /dev/null
+++ b/Include/pymem.h
@@ -0,0 +1,179 @@
+/***********************************************************
+Copyright (c) 2000, BeOpen.com.
+Copyright (c) 1995-2000, Corporation for National Research Initiatives.
+Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
+All rights reserved.
+
+See the file "Misc/COPYRIGHT" for information on usage and
+redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+******************************************************************/
+
+/* Lowest-level memory allocation interface */
+
+#ifndef Py_PYMEM_H
+#define Py_PYMEM_H
+
+#include "pyport.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Core memory allocator
+ * =====================
+ */
+
+/* To make sure the interpreter is user-malloc friendly, all memory
+   APIs are implemented on top of this one.
+
+   The PyCore_* macros can be defined to make the interpreter use a
+   custom allocator. Note that they are for internal use only. Both
+   the core and extension modules should use the PyMem_* API.
+
+   See the comment block at the end of this file for two scenarios
+   showing how to use this to use a different allocator. */
+
+#ifndef PyCore_MALLOC_FUNC
+#undef PyCore_REALLOC_FUNC
+#undef PyCore_FREE_FUNC
+#define PyCore_MALLOC_FUNC      malloc
+#define PyCore_REALLOC_FUNC     realloc
+#define PyCore_FREE_FUNC        free
+#endif
+
+#ifndef PyCore_MALLOC_PROTO
+#undef PyCore_REALLOC_PROTO
+#undef PyCore_FREE_PROTO
+#define PyCore_MALLOC_PROTO    (size_t)
+#define PyCore_REALLOC_PROTO   (void *, size_t)
+#define PyCore_FREE_PROTO      (void *)
+#endif
+
+#ifdef NEED_TO_DECLARE_MALLOC_AND_FRIEND
+extern void *PyCore_MALLOC_FUNC PyCore_MALLOC_PROTO;
+extern void *PyCore_REALLOC_FUNC PyCore_REALLOC_PROTO;
+extern void PyCore_FREE_FUNC PyCore_FREE_PROTO;
+#endif
+
+#ifndef PyCore_MALLOC
+#undef PyCore_REALLOC
+#undef PyCore_FREE
+#define PyCore_MALLOC(n)        PyCore_MALLOC_FUNC(n)
+#define PyCore_REALLOC(p, n)    PyCore_REALLOC_FUNC((p), (n))
+#define PyCore_FREE(p)          PyCore_FREE_FUNC(p)
+#endif
+
+/* BEWARE:
+
+   Each interface exports both functions and macros. Extension modules
+   should normally use the functions for ensuring binary compatibility
+   of the user's code across Python versions. Subsequently, if the
+   Python runtime switches to its own malloc (different from standard
+   malloc), no recompilation is required for the extensions.
+
+   The macro versions trade compatibility for speed. They can be used
+   whenever there is a performance problem, but their use implies
+   recompilation of the code for each new Python release. The Python
+   core uses the macros because it *is* compiled on every upgrade.
+   This might not be the case with 3rd party extensions in a custom
+   setup (for example, a customer does not always have access to the
+   source of 3rd party deliverables). You have been warned! */
+
+/*
+ * Raw memory interface
+ * ====================
+ */
+
+/* Functions */
+
+/* Function wrappers around PyCore_MALLOC and friends; useful if you
+   need to be sure that you are using the same memory allocator as
+   Python.  Note that the wrappers make sure that allocating 0 bytes
+   returns a non-NULL pointer, even if the underlying malloc
+   doesn't. Returned pointers must be checked for NULL explicitly.
+   No action is performed on failure. */
+extern DL_IMPORT(void *) PyMem_Malloc(size_t);
+extern DL_IMPORT(void *) PyMem_Realloc(void *, size_t);
+extern DL_IMPORT(void) PyMem_Free(void *);
+
+/* Starting from Python 1.6, the wrappers Py_{Malloc,Realloc,Free} are
+   no longer supported. They used to call PyErr_NoMemory() on failure. */
+
+/* Macros */
+#define PyMem_MALLOC(n)         PyCore_MALLOC(n)
+#define PyMem_REALLOC(p, n)     PyCore_REALLOC((void *)(p), (n))
+#define PyMem_FREE(p)           PyCore_FREE((void *)(p))
+
+/*
+ * Type-oriented memory interface
+ * ==============================
+ */
+
+/* Functions */
+#define PyMem_New(type, n) \
+	( (type *) PyMem_Malloc((n) * sizeof(type)) )
+#define PyMem_Resize(p, type, n) \
+	( (p) = (type *) PyMem_Realloc((n) * sizeof(type)) )
+#define PyMem_Del(p) PyMem_Free(p)
+
+/* Macros */
+#define PyMem_NEW(type, n) \
+	( (type *) PyMem_MALLOC(_PyMem_EXTRA + (n) * sizeof(type)) )
+#define PyMem_RESIZE(p, type, n) \
+	if ((p) == NULL) \
+		(p) = (type *)(PyMem_MALLOC( \
+				    _PyMem_EXTRA + (n) * sizeof(type))); \
+	else \
+		(p) = (type *)(PyMem_REALLOC((p), \
+				    _PyMem_EXTRA + (n) * sizeof(type)))
+#define PyMem_DEL(p) PyMem_FREE(p)
+
+/* PyMem_XDEL is deprecated. To avoid the call when p is NULL,
+   it is recommended to write the test explicitly in the code.
+   Note that according to ANSI C, free(NULL) has no effect. */
+
+#ifdef __cplusplus
+}
+#endif
+
+/* SCENARIOS
+
+   Here are two scenarios by Vladimir Marangozov (the author of the
+   memory allocation redesign).
+
+   1) Scenario A
+
+   Suppose you want to use a debugging malloc library that collects info on
+   where the malloc calls originate from. Assume the interface is:
+
+   d_malloc(size_t n, char* src_file, unsigned long src_line) c.s.
+
+   In this case, you would define (for example in config.h) :
+
+   #define PyCore_MALLOC_FUNC      d_malloc
+   ...
+   #define PyCore_MALLOC_PROTO	(size_t, char *, unsigned long)
+   ...
+   #define NEED_TO_DECLARE_MALLOC_AND_FRIEND
+
+   #define PyCore_MALLOC(n)	PyCore_MALLOC_FUNC((n), __FILE__, __LINE__)
+   ...
+
+   2) Scenario B
+
+   Suppose you want to use malloc hooks (defined & initialized in a 3rd party
+   malloc library) instead of malloc functions.  In this case, you would
+   define:
+
+   #define PyCore_MALLOC_FUNC	(*malloc_hook)
+   ...
+   #define NEED_TO_DECLARE_MALLOC_AND_FRIEND
+
+   and ignore the previous definitions about PyCore_MALLOC_FUNC, etc.
+
+
+*/
+
+
+#endif /* !Py_PYMEM_H */
diff --git a/Include/pyport.h b/Include/pyport.h
index 6026a2b..f635703 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -9,6 +9,8 @@
 #ifndef Py_PYPORT_H
 #define Py_PYPORT_H
 
+#include "config.h" /* include for defines */
+
 /**************************************************************************
 Symbols and macros to supply platform-independent interfaces to basic
 C language & library operations whose spellings vary across platforms.
@@ -220,9 +222,9 @@
 #endif 
 
 
-/***********************************
- * WRAPPER FOR malloc/realloc/free *
- ***********************************/
+/************************************
+ * MALLOC COMPATIBILITY FOR pymem.h *
+ ************************************/
 
 #ifndef DL_IMPORT       /* declarations for DLL import */
 #define DL_IMPORT(RTYPE) RTYPE
@@ -240,157 +242,6 @@
 #define _PyMem_EXTRA 0
 #endif
 
-/*
- * Core memory allocator
- * =====================
- */
-
-/* To make sure the interpreter is user-malloc friendly, all memory
-   APIs are implemented on top of this one.
-
-   The PyCore_* macros can be defined to make the interpreter use a
-   custom allocator. Note that they are for internal use only. Both
-   the core and extension modules should use the PyMem_* API.
-
-   See the comment block at the end of this file for two scenarios
-   showing how to use this to use a different allocator. */
-
-#ifndef PyCore_MALLOC_FUNC
-#undef PyCore_REALLOC_FUNC
-#undef PyCore_FREE_FUNC
-#define PyCore_MALLOC_FUNC      malloc
-#define PyCore_REALLOC_FUNC     realloc
-#define PyCore_FREE_FUNC        free
-#endif
-
-#ifndef PyCore_MALLOC_PROTO
-#undef PyCore_REALLOC_PROTO
-#undef PyCore_FREE_PROTO
-#define PyCore_MALLOC_PROTO    (size_t)
-#define PyCore_REALLOC_PROTO   (void *, size_t)
-#define PyCore_FREE_PROTO      (void *)
-#endif
-
-#ifdef NEED_TO_DECLARE_MALLOC_AND_FRIEND
-extern void *PyCore_MALLOC_FUNC PyCore_MALLOC_PROTO;
-extern void *PyCore_REALLOC_FUNC PyCore_REALLOC_PROTO;
-extern void PyCore_FREE_FUNC PyCore_FREE_PROTO;
-#endif
-
-#ifndef PyCore_MALLOC
-#undef PyCore_REALLOC
-#undef PyCore_FREE
-#define PyCore_MALLOC(n)        PyCore_MALLOC_FUNC(n)
-#define PyCore_REALLOC(p, n)    PyCore_REALLOC_FUNC((p), (n))
-#define PyCore_FREE(p)          PyCore_FREE_FUNC(p)
-#endif
-
-/* BEWARE:
-
-   Each interface exports both functions and macros. Extension modules
-   should normally use the functions for ensuring binary compatibility
-   of the user's code across Python versions. Subsequently, if the
-   Python runtime switches to its own malloc (different from standard
-   malloc), no recompilation is required for the extensions.
-
-   The macro versions trade compatibility for speed. They can be used
-   whenever there is a performance problem, but their use implies
-   recompilation of the code for each new Python release. The Python
-   core uses the macros because it *is* compiled on every upgrade.
-   This might not be the case with 3rd party extensions in a custom
-   setup (for example, a customer does not always have access to the
-   source of 3rd party deliverables). You have been warned! */
-
-/*
- * Raw memory interface
- * ====================
- */
-
-/* Functions */
-
-/* Function wrappers around PyCore_MALLOC and friends; useful if you
-   need to be sure that you are using the same memory allocator as
-   Python.  Note that the wrappers make sure that allocating 0 bytes
-   returns a non-NULL pointer, even if the underlying malloc
-   doesn't. Returned pointers must be checked for NULL explicitly.
-   No action is performed on failure. */
-extern DL_IMPORT(void *) PyMem_Malloc(size_t);
-extern DL_IMPORT(void *) PyMem_Realloc(void *, size_t);
-extern DL_IMPORT(void) PyMem_Free(void *);
-
-/* Starting from Python 1.6, the wrappers Py_{Malloc,Realloc,Free} are
-   no longer supported. They used to call PyErr_NoMemory() on failure. */
-
-/* Macros */
-#define PyMem_MALLOC(n)         PyCore_MALLOC(n)
-#define PyMem_REALLOC(p, n)     PyCore_REALLOC((void *)(p), (n))
-#define PyMem_FREE(p)           PyCore_FREE((void *)(p))
-
-/*
- * Type-oriented memory interface
- * ==============================
- */
-
-/* Functions */
-#define PyMem_New(type, n) \
-	( (type *) PyMem_Malloc((n) * sizeof(type)) )
-#define PyMem_Resize(p, type, n) \
-	( (p) = (type *) PyMem_Realloc((n) * sizeof(type)) )
-#define PyMem_Del(p) PyMem_Free(p)
-
-/* Macros */
-#define PyMem_NEW(type, n) \
-	( (type *) PyMem_MALLOC(_PyMem_EXTRA + (n) * sizeof(type)) )
-#define PyMem_RESIZE(p, type, n) \
-	if ((p) == NULL) \
-		(p) = (type *)(PyMem_MALLOC( \
-				    _PyMem_EXTRA + (n) * sizeof(type))); \
-	else \
-		(p) = (type *)(PyMem_REALLOC((p), \
-				    _PyMem_EXTRA + (n) * sizeof(type)))
-#define PyMem_DEL(p) PyMem_FREE(p)
-
-/* PyMem_XDEL is deprecated. To avoid the call when p is NULL,
-   it is recommended to write the test explicitly in the code.
-   Note that according to ANSI C, free(NULL) has no effect. */
-
-/* SCENARIOS
-
-   Here are two scenarios by Vladimir Marangozov (the author of the
-   memory allocation redesign).
-
-   1) Scenario A
-
-   Suppose you want to use a debugging malloc library that collects info on
-   where the malloc calls originate from. Assume the interface is:
-
-   d_malloc(size_t n, char* src_file, unsigned long src_line) c.s.
-
-   In this case, you would define (for example in config.h) :
-
-   #define PyCore_MALLOC_FUNC      d_malloc
-   ...
-   #define PyCore_MALLOC_PROTO	(size_t, char *, unsigned long)
-   ...
-   #define NEED_TO_DECLARE_MALLOC_AND_FRIEND
-
-   #define PyCore_MALLOC(n)	PyCore_MALLOC_FUNC((n), __FILE__, __LINE__)
-   ...
-
-   2) Scenario B
-
-   Suppose you want to use malloc hooks (defined & initialized in a 3rd party
-   malloc library) instead of malloc functions.  In this case, you would
-   define:
-
-   #define PyCore_MALLOC_FUNC	(*malloc_hook)
-   ...
-   #define NEED_TO_DECLARE_MALLOC_AND_FRIEND
-
-   and ignore the previous definitions about PyCore_MALLOC_FUNC, etc.
-
-
-*/
 
 /********************************************
  * WRAPPER FOR <time.h> and/or <sys/time.h> *
