diff --git a/src/pygit2.c b/src/pygit2.c
index 1c3f42b..cd56a6e 100644
--- a/src/pygit2.c
+++ b/src/pygit2.c
@@ -290,9 +290,9 @@ moduleinit(PyObject* m)
     PyModule_AddIntConstant(m, "GIT_SORT_TOPOLOGICAL", GIT_SORT_TOPOLOGICAL);
     PyModule_AddIntConstant(m, "GIT_SORT_TIME", GIT_SORT_TIME);
     PyModule_AddIntConstant(m, "GIT_SORT_REVERSE", GIT_SORT_REVERSE);
+    PyModule_AddIntConstant(m, "GIT_REF_INVALID", GIT_REF_INVALID);
     PyModule_AddIntConstant(m, "GIT_REF_OID", GIT_REF_OID);
     PyModule_AddIntConstant(m, "GIT_REF_SYMBOLIC", GIT_REF_SYMBOLIC);
-    PyModule_AddIntConstant(m, "GIT_REF_PACKED", GIT_REF_PACKED);
     PyModule_AddIntConstant(m, "GIT_REF_LISTALL", GIT_REF_LISTALL);
 
     /* Git status flags */
diff --git a/src/reference.c b/src/reference.c
index f13ed31..129ed44 100644
--- a/src/reference.c
+++ b/src/reference.c
@@ -161,6 +161,7 @@ Reference_rename(Reference *self, PyObject *py_name)
 {
     char *c_name;
     int err;
+    git_reference *new_reference;
 
     CHECK_REFERENCE(self);
 
@@ -170,33 +171,12 @@ Reference_rename(Reference *self, PyObject *py_name)
         return NULL;
 
     /* Rename */
-    err = git_reference_rename(self->reference, c_name, 0);
+    err = git_reference_rename(&new_reference, self->reference, c_name, 0);
     free(c_name);
     if (err < 0)
         return Error_set(err);
 
-    Py_RETURN_NONE;
-}
-
-
-PyDoc_STRVAR(Reference_reload__doc__,
-  "reload()\n"
-  "\n"
-  "Reload the reference from the file-system.");
-
-PyObject *
-Reference_reload(Reference *self)
-{
-    int err;
-
-    CHECK_REFERENCE(self);
-
-    err = git_reference_reload(self->reference);
-    if (err < 0) {
-        self->reference = NULL;
-        return Error_set(err);
-    }
-
+    self->reference = new_reference;
     Py_RETURN_NONE;
 }
 
@@ -214,13 +194,8 @@ Reference_resolve(Reference *self, PyObject *args)
 
     CHECK_REFERENCE(self);
 
-    /* Direct: reload */
+    /* Direct: return myself */
     if (git_reference_type(self->reference) == GIT_REF_OID) {
-        err = git_reference_reload(self->reference);
-        if (err < 0) {
-            self->reference = NULL;
-            return Error_set(err);
-        }
         Py_INCREF(self);
         return (PyObject *)self;
     }
@@ -263,6 +238,7 @@ Reference_target__set__(Reference *self, PyObject *py_name)
 {
     char *c_name;
     int err;
+    git_reference *new_ref;
 
     CHECK_REFERENCE_INT(self);
 
@@ -272,13 +248,14 @@ Reference_target__set__(Reference *self, PyObject *py_name)
         return -1;
 
     /* Set the new target */
-    err = git_reference_symbolic_set_target(self->reference, c_name);
+    err = git_reference_symbolic_set_target(&new_ref, self->reference, c_name);
     free(c_name);
     if (err < 0) {
         Error_set(err);
         return -1;
     }
 
+    self->reference = new_ref;
     return 0;
 }
 
@@ -320,6 +297,7 @@ Reference_oid__set__(Reference *self, PyObject *py_hex)
 {
     git_oid oid;
     int err;
+    git_reference *new_ref;
 
     CHECK_REFERENCE_INT(self);
 
@@ -332,12 +310,13 @@ Reference_oid__set__(Reference *self, PyObject *py_hex)
     }
 
     /* Set the oid */
-    err = git_reference_set_target(self->reference, &oid);
+    err = git_reference_set_target(&new_ref, self->reference, &oid);
     if (err < 0) {
         Error_set(err);
         return -1;
     }
 
+    self->reference = new_ref;
     return 0;
 }
 
@@ -366,7 +345,7 @@ Reference_hex__get__(Reference *self)
 
 
 PyDoc_STRVAR(Reference_type__doc__,
-  "Type (GIT_REF_OID, GIT_REF_SYMBOLIC or GIT_REF_PACKED).");
+  "Type (GIT_REF_OID or GIT_REF_SYMBOLIC).");
 
 PyObject *
 Reference_type__get__(Reference *self)
@@ -481,7 +460,6 @@ PyTypeObject RefLogEntryType = {
 PyMethodDef Reference_methods[] = {
     METHOD(Reference, delete, METH_NOARGS),
     METHOD(Reference, rename, METH_O),
-    METHOD(Reference, reload, METH_NOARGS),
     METHOD(Reference, resolve, METH_NOARGS),
     METHOD(Reference, log, METH_NOARGS),
     {NULL}
diff --git a/src/repository.c b/src/repository.c
index 1016948..497e28d 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -902,24 +902,6 @@ Repository_create_symbolic_reference(Repository *self,  PyObject *args,
 }
 
 
-PyDoc_STRVAR(Repository_packall_references__doc__,
-  "packall_references()\n"
-  "\n"
-  "Pack all the loose references in the repository.");
-
-PyObject *
-Repository_packall_references(Repository *self, PyObject *args)
-{
-    int err;
-
-    err = git_reference_packall(self->repo);
-    if (err < 0)
-        return Error_set(err);
-
-    Py_RETURN_NONE;
-}
-
-
 PyDoc_STRVAR(Repository_status__doc__,
   "status() -> {str: int}\n"
   "\n"
@@ -1145,7 +1127,6 @@ PyMethodDef Repository_methods[] = {
     METHOD(Repository, create_symbolic_reference, METH_VARARGS),
     METHOD(Repository, listall_references, METH_VARARGS),
     METHOD(Repository, lookup_reference, METH_O),
-    METHOD(Repository, packall_references, METH_NOARGS),
     METHOD(Repository, revparse_single, METH_O),
     METHOD(Repository, status, METH_NOARGS),
     METHOD(Repository, status_file, METH_O),
diff --git a/test/test_refs.py b/test/test_refs.py
index 0b2f61c..fb00182 100644
--- a/test/test_refs.py
+++ b/test/test_refs.py
@@ -142,16 +142,16 @@ class ReferencesTest(utils.RepoTestCase):
         self.assertEqual(reference.name, 'refs/tags/version2')
 
 
-    def test_reload(self):
-        name = 'refs/tags/version1'
+#   def test_reload(self):
+#       name = 'refs/tags/version1'
 
-        repo = self.repo
-        ref = repo.create_reference(name, "refs/heads/master", symbolic=True)
-        ref2 = repo.lookup_reference(name)
-        ref.delete()
-        self.assertEqual(ref2.name, name)
-        self.assertRaises(KeyError, ref2.reload)
-        self.assertRaises(GitError, getattr, ref2, 'name')
+#       repo = self.repo
+#       ref = repo.create_reference(name, "refs/heads/master", symbolic=True)
+#       ref2 = repo.lookup_reference(name)
+#       ref.delete()
+#       self.assertEqual(ref2.name, name)
+#       self.assertRaises(KeyError, ref2.reload)
+#       self.assertRaises(GitError, getattr, ref2, 'name')
 
 
     def test_reference_resolve(self):
@@ -209,8 +209,8 @@ class ReferencesTest(utils.RepoTestCase):
         self.assertEqual(reference.target, 'refs/heads/master')
 
 
-    def test_packall_references(self):
-        self.repo.packall_references()
+#   def test_packall_references(self):
+#       self.repo.packall_references()
 
 
 if __name__ == '__main__':