diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c
index 83f5f43..6c94df2 100644
--- a/Modules/dbmmodule.c
+++ b/Modules/dbmmodule.c
@@ -94,7 +94,7 @@
 dbm_subscript(dbmobject *dp, register PyObject *key)
 {
 	datum drec, krec;
-	int tmp_size;
+	Py_ssize_t tmp_size;
 	
 	if (!PyArg_Parse(key, "s#", &krec.dptr, &tmp_size) )
 		return NULL;
@@ -112,18 +112,18 @@
 		PyErr_SetString(DbmError, "");
 		return NULL;
 	}
-	return PyString_FromStringAndSize(drec.dptr, drec.dsize);
+	return PyBytes_FromStringAndSize(drec.dptr, drec.dsize);
 }
 
 static int
 dbm_ass_sub(dbmobject *dp, PyObject *v, PyObject *w)
 {
         datum krec, drec;
-	int tmp_size;
+	Py_ssize_t tmp_size;
 	
         if ( !PyArg_Parse(v, "s#", &krec.dptr, &tmp_size) ) {
 		PyErr_SetString(PyExc_TypeError,
-				"dbm mappings have string indices only");
+				"dbm mappings have string keys only");
 		return -1;
 	}
 	krec.dsize = tmp_size;
@@ -142,7 +142,7 @@
 	} else {
 		if ( !PyArg_Parse(w, "s#", &drec.dptr, &tmp_size) ) {
 			PyErr_SetString(PyExc_TypeError,
-				     "dbm mappings have string elements only");
+			     "dbm mappings have byte string elements only");
 			return -1;
 		}
 		drec.dsize = tmp_size;
@@ -216,6 +216,11 @@
 				"DBM object has already been closed");
                  return -1;
 	}
+	if (PyUnicode_Check(arg)) {
+		arg = _PyUnicode_AsDefaultEncodedString(arg, NULL);
+		if (arg == NULL)
+			return -1;
+	}
 	if (!PyString_Check(arg)) {
 		PyErr_Format(PyExc_TypeError,
 			     "dbm key must be string, not %.100s",
@@ -247,7 +252,7 @@
 	datum key, val;
 	PyObject *defvalue = Py_None;
 	char *tmp_ptr;
-	int tmp_size;
+	Py_ssize_t tmp_size;
 
 	if (!PyArg_ParseTuple(args, "s#|O:get",
                               &tmp_ptr, &tmp_size, &defvalue))
@@ -257,7 +262,7 @@
         check_dbmobject_open(dp);
 	val = dbm_fetch(dp->di_dbm, key);
 	if (val.dptr != NULL)
-		return PyString_FromStringAndSize(val.dptr, val.dsize);
+		return PyBytes_FromStringAndSize(val.dptr, val.dsize);
 	else {
 		Py_INCREF(defvalue);
 		return defvalue;
@@ -270,9 +275,9 @@
 	datum key, val;
 	PyObject *defvalue = NULL;
 	char *tmp_ptr;
-	int tmp_size;
+	Py_ssize_t tmp_size;
 
-	if (!PyArg_ParseTuple(args, "s#|S:setdefault",
+	if (!PyArg_ParseTuple(args, "s#|O:setdefault",
                               &tmp_ptr, &tmp_size, &defvalue))
 		return NULL;
 	key.dptr = tmp_ptr;
@@ -280,19 +285,27 @@
         check_dbmobject_open(dp);
 	val = dbm_fetch(dp->di_dbm, key);
 	if (val.dptr != NULL)
-		return PyString_FromStringAndSize(val.dptr, val.dsize);
+		return PyBytes_FromStringAndSize(val.dptr, val.dsize);
 	if (defvalue == NULL) {
-		defvalue = PyString_FromStringAndSize(NULL, 0);
+		defvalue = PyBytes_FromStringAndSize(NULL, 0);
 		if (defvalue == NULL)
 			return NULL;
+		val.dptr = NULL;
+		val.dsize = 0;
 	}
-	else
+	else {
+		if ( !PyArg_Parse(defvalue, "s#", &val.dptr, &tmp_size) ) {
+			PyErr_SetString(PyExc_TypeError,
+				"dbm mappings have byte string elements only");
+			return NULL;
+		}
+		val.dsize = tmp_size;
 		Py_INCREF(defvalue);
-	val.dptr = PyString_AS_STRING(defvalue);
-	val.dsize = PyString_GET_SIZE(defvalue);
+	}
 	if (dbm_store(dp->di_dbm, key, val, DBM_INSERT) < 0) {
 		dbm_clearerr(dp->di_dbm);
 		PyErr_SetString(DbmError, "cannot add item to database");
+		Py_DECREF(defvalue);
 		return NULL;
 	}
 	return defvalue;
