diff --git a/pygit2.c b/pygit2.c
index 4896cd8..6144d02 100644
--- a/pygit2.c
+++ b/pygit2.c
@@ -887,6 +887,7 @@ static PyTypeObject TreeEntryType = {
 
 static Py_ssize_t
 Tree_len(Tree *self) {
+    assert(self->tree);
     return (Py_ssize_t)git_tree_entrycount(self->tree);
 }
 
@@ -1102,7 +1103,6 @@ Tag_init(Tag *py_tag, PyObject *args, PyObject *kwds) {
         return -1;
     }
 
-    /* TODO Finish this */
     if (!PyArg_ParseTuple(args, "O!sO&iO&s", &RepositoryType, &repo,
                           &tag_name,
                           py_str_to_git_oid, &target,
diff --git a/test/test_index.py b/test/test_index.py
index 13a1cc1..38c8b17 100644
--- a/test/test_index.py
+++ b/test/test_index.py
@@ -48,8 +48,6 @@ class IndexTest(utils.RepoTestCase):
 
     def test_read(self):
         index = self.repo.index
-        self.assertEqual(len(index), 0)
-        index.read()
         self.assertEqual(len(index), 2)
 
         self.assertRaises(TypeError, lambda: index[()])
diff --git a/test/test_tag.py b/test/test_tag.py
index dae0342..c3afdb7 100644
--- a/test/test_tag.py
+++ b/test/test_tag.py
@@ -55,40 +55,31 @@ class TagTest(utils.BareRepoTestCase):
 
     def test_new_tag(self):
         name = 'thetag'
+        target = 'af431f20fc541ed6d5afede3e2dc7160f6f01f16'
         message = 'Tag a blob.\n'
         tagger = ('John Doe', 'jdoe@example.com', 12347)
 
-        tag = pygit2.Tag(self.repo)
-        self.assertEqual(None, tag.sha)
-        self.assertEqual(None, tag.name)
-        self.assertEqual(None, tag.tagger)
-        self.assertEqual(None, tag.message)
-        self.assertEqual(None, tag.target)
+        tag = pygit2.Tag(self.repo, name, target, pygit2.GIT_OBJ_BLOB,
+                         tagger, message)
 
-        tag.name = name
-        tag.tagger = tagger
-        tag.message = message
-        target = self.repo['af431f20fc541ed6d5afede3e2dc7160f6f01f16']
-        target_sha = target.sha
-        tag.target = target
-        del target
+        self.assertEqual('3ee44658fd11660e828dfc96b9b5c5f38d5b49bb', tag.sha)
         self.assertEqual(name, tag.name)
+        self.assertEqual(target, tag.target.sha)
         self.assertEqual(tagger, tag.tagger)
-        self.assertEqual(target_sha, tag.target.sha)
-
-        tag.write()
+        self.assertEqual(message, tag.message)
         self.assertEqual(name, self.repo[tag.sha].name)
 
     def test_modify_tag(self):
-        message = 'Different message.\n'
+        name = 'thetag'
+        target = 'af431f20fc541ed6d5afede3e2dc7160f6f01f16'
+        message = 'Tag a blob.\n'
+        tagger = ('John Doe', 'jdoe@example.com', 12347)
+
         tag = self.repo[TAG_SHA]
-        old_sha = tag.sha
-        self.assertNotEqual(message, tag.message)
-        tag.message = message
-        self.assertEqual(message, tag.message)
-        tag.write()
-        self.assertNotEqual(old_sha, tag.sha)
-        self.assertEqual(tag.sha, self.repo[tag.sha].sha)
+        self.assertRaises(AttributeError, setattr, tag, 'name', name)
+        self.assertRaises(AttributeError, setattr, tag, 'target', target)
+        self.assertRaises(AttributeError, setattr, tag, 'tagger', tagger)
+        self.assertRaises(AttributeError, setattr, tag, 'message', message)
 
 
 if __name__ == '__main__':
diff --git a/test/test_tree.py b/test/test_tree.py
index 7f3d8b8..bcbac31 100644
--- a/test/test_tree.py
+++ b/test/test_tree.py
@@ -29,6 +29,7 @@
 
 __author__ = 'dborowitz@google.com (Dave Borowitz)'
 
+import operator
 import unittest
 
 import pygit2
@@ -76,7 +77,10 @@ class TreeTest(utils.BareRepoTestCase):
         self.assertTreeEntryEqual(
           subtree[0], '297efb891a47de80be0cfe9c639e4b8c9b450989', 'd', 0100644)
 
-    def test_new_tree(self):
+    # XXX Creating new trees was removed from libgit2 by v0.11.0, we
+    # deactivate this test temporarily, since the feature may come back in
+    # a near feature (if it does not this test will be removed).
+    def xtest_new_tree(self):
         tree = pygit2.Tree(self.repo)
         self.assertEqual(0, len(tree))
         tree.add_entry('1' * 40, 'x', 0100644)
@@ -101,33 +105,8 @@ class TreeTest(utils.BareRepoTestCase):
 
     def test_modify_tree(self):
         tree = self.repo[TREE_SHA]
-
-        def fail_set():
-            tree['c'] = tree['a']
-        self.assertRaises(ValueError, fail_set)
-
-        def fail_del_by_name():
-            del tree['asdf']
-        self.assertRaisesWithArg(KeyError, 'asdf', fail_del_by_name)
-
-        def fail_del_by_index():
-            del tree[99]
-        self.assertRaisesWithArg(IndexError, 99, fail_del_by_index)
-
-        self.assertTrue('c' in tree)
-        self.assertEqual(3, len(tree))
-        del tree['c']
-        self.assertEqual(2, len(tree))
-        self.assertFalse('c' in tree)
-
-        tree.add_entry('1' * 40, 'c', 0100644)
-        self.assertTrue('c' in tree)
-        self.assertEqual(3, len(tree))
-
-        old_sha = tree.sha
-        tree.write()
-        self.assertNotEqual(tree.sha, old_sha)
-        self.assertEqual(tree.sha, self.repo[tree.sha].sha)
+        self.assertRaises(TypeError, operator.setitem, 'c', tree['a'])
+        self.assertRaises(TypeError, operator.delitem, 'c')
 
 
 if __name__ == '__main__':