diff --git a/Modules/_struct.c b/Modules/_struct.c
index 43bf561..0f070b3 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -1398,8 +1398,9 @@
 PyDoc_STRVAR(s_unpack__doc__,
 "S.unpack(buffer) -> (v1, v2, ...)\n\
 \n\
-Return a tuple containing values unpacked according to S.format.  Requires\n\
-len(buffer) == S.size.  See help(struct) for more on format strings.");
+Return tuple containing values unpacked according to this Struct's format.\n\
+Requires len(buffer) == self.size. See struct.__doc__ for more on format\n\
+strings.");
 
 static PyObject *
 s_unpack(PyObject *self, PyObject *input)
@@ -1425,10 +1426,12 @@
 }
 
 PyDoc_STRVAR(s_unpack_from__doc__,
-"S.unpack_from(buffer[, offset=0]) -> (v1, v2, ...)\n\
+"S.unpack_from(buffer[, offset]) -> (v1, v2, ...)\n\
 \n\
-Return a tuple containing values unpacked according to S.format.  Requires\n\
-len(buffer[offset:]) >= S.size.  See help(struct) for more on format strings.");
+Return tuple containing values unpacked according to this Struct's format.\n\
+Unlike unpack, unpack_from can unpack values from any object supporting\n\
+the buffer API, not just str. Requires len(buffer[offset:]) >= self.size.\n\
+See struct.__doc__ for more on format strings.");
 
 static PyObject *
 s_unpack_from(PyObject *self, PyObject *args, PyObject *kwds)
@@ -1563,8 +1566,8 @@
 PyDoc_STRVAR(s_pack__doc__,
 "S.pack(v1, v2, ...) -> bytes\n\
 \n\
-Return a bytes object containing values v1, v2, ... packed according to\n\
-S.format.  See help(struct) for more on format strings.");
+Return a bytes containing values v1, v2, ... packed according to this\n\
+Struct's format. See struct.__doc__ for more on format strings.");
 
 static PyObject *
 s_pack(PyObject *self, PyObject *args)
@@ -1600,9 +1603,10 @@
 PyDoc_STRVAR(s_pack_into__doc__,
 "S.pack_into(buffer, offset, v1, v2, ...)\n\
 \n\
-Pack the values v1, v2, ... according to S.format and write the packed bytes\n\
-into the writable buffer buf starting at offset.  Note that the offset is not\n\
-an optional argument.  See help(struct) for more on format strings.");
+Pack the values v1, v2, ... according to this Struct's format, write \n\
+the packed bytes into the writable buffer buf starting at offset.  Note\n\
+that the offset is not an optional argument.  See struct.__doc__ for \n\
+more on format strings.");
 
 static PyObject *
 s_pack_into(PyObject *self, PyObject *args)
@@ -1792,10 +1796,7 @@
 }
 
 PyDoc_STRVAR(pack_doc,
-"pack(fmt, v1, v2, ...) -> bytes\n\
-\n\
-Return a bytes object containing values v1, v2, ... packed according to fmt.\n\
-See help(struct) for more on format strings.");
+"Return bytes containing values v1, v2, ... packed according to fmt.");
 
 static PyObject *
 pack(PyObject *self, PyObject *args)
@@ -1824,11 +1825,8 @@
 }
 
 PyDoc_STRVAR(pack_into_doc,
-"pack_into(fmt, buffer, offset, v1, v2, ...)\n\
-\n\
-Pack the values v1, v2, ... according to fmt and write the packed bytes into\n\
-the writable buffer buf starting at offset.  Note that the offset is not an\n\
-optional argument.  See help(struct) for more on format strings.");
+"Pack the values v1, v2, ... according to fmt.\n\
+Write the packed bytes into the writable buffer buf starting at offset.");
 
 static PyObject *
 pack_into(PyObject *self, PyObject *args)
@@ -1857,10 +1855,8 @@
 }
 
 PyDoc_STRVAR(unpack_doc,
-"unpack(fmt, buffer) -> (v1, v2, ...)\n\
-\n\
-Return a tuple containing values unpacked according to fmt.  Requires\n\
-len(buffer) == calcsize(fmt). See help(struct) for more on format strings.");
+"Unpack the bytes containing packed C structure data, according to fmt.\n\
+Requires len(bytes) == calcsize(fmt).");
 
 static PyObject *
 unpack(PyObject *self, PyObject *args)
@@ -1879,11 +1875,8 @@
 }
 
 PyDoc_STRVAR(unpack_from_doc,
-"unpack_from(fmt, buffer[, offset=0]) -> (v1, v2, ...)\n\
-\n\
-Return a tuple containing values unpacked according to fmt.  Requires\n\
-len(buffer[offset:]) >= calcsize(fmt).  See help(struct) for more on format\n\
-strings.");
+"Unpack the buffer, containing packed C structure data, according to\n\
+fmt, starting at offset. Requires len(buffer[offset:]) >= calcsize(fmt).");
 
 static PyObject *
 unpack_from(PyObject *self, PyObject *args, PyObject *kwds)
