diff --git a/km3io/offline.py b/km3io/offline.py
index b83eb25db754c042b9a20a106b0a75550a6c86c4..6d242cba07075275f34112d47cb235b054d3489a 100644
--- a/km3io/offline.py
+++ b/km3io/offline.py
@@ -88,7 +88,7 @@ class cached_property:
 
 class OfflineReader:
     """reader for offline ROOT files"""
-    def __init__(self, file_path=None, fobj=None, data=None, index=None):
+    def __init__(self, file_path=None):
         """ OfflineReader class is an offline ROOT file wrapper
 
         Parameters
@@ -98,49 +98,15 @@ class OfflineReader:
             path-like object that points to the file.
 
         """
-        self._index = index
-        if file_path is not None:
-            self._fobj = uproot.open(file_path)
-            self._tree = self._fobj[MAIN_TREE_NAME]
-            self._data = self._tree.lazyarrays(basketcache=BASKET_CACHE)
-        else:
-            self._fobj = fobj
-            self._tree = self._fobj[MAIN_TREE_NAME]
-            self._data = data
+        self._fobj = uproot.open(file_path)
+        self._tree = self._fobj[MAIN_TREE_NAME]
 
     @cached_property
     def events(self):
         return Branch(self._tree,
                       mapper=EVENTS_MAP,
-                      index=self._index,
                       subbranchmaps=SUBBRANCH_MAPS)
 
-    @classmethod
-    def from_index(cls, source, index):
-        """Create an instance with a subtree of a given index
-
-        Parameters
-        ----------
-        source: ROOTDirectory
-            The source file object.
-        index: index or slice
-            The index or slice to create the subtree.
-        """
-        instance = cls(fobj=source._fobj,
-                       data=source._data[index],
-                       index=index)
-        return instance
-
-    def __getitem__(self, index):
-        return OfflineReader.from_index(source=self, index=index)
-
-    def __len__(self):
-        tree = self._fobj[MAIN_TREE_NAME]
-        if self._index is None:
-            return len(tree)
-        else:
-            return len(tree.lazyarrays(basketcache=BASKET_CACHE)[self.index])
-
     @cached_property
     def header(self):
         if 'Head' in self._fobj:
diff --git a/tests/test_offline.py b/tests/test_offline.py
index 33b8cf192985d8a625fd0739a6c92674e45e762f..3d318004969ba380a678f08fa94b9f70163f8fe4 100644
--- a/tests/test_offline.py
+++ b/tests/test_offline.py
@@ -14,13 +14,10 @@ class TestOfflineReader(unittest.TestCase):
     def setUp(self):
         self.r = OFFLINE_FILE
         self.nu = OFFLINE_NUMUCC
-        self.Nevents = 10
+        self.n_events = 10
 
     def test_number_events(self):
-        Nevents = len(self.r)
-
-        # check that there are 10 events
-        self.assertEqual(Nevents, self.Nevents)
+        assert self.n_events == len(self.r.events)
 
     def test_find_empty(self):
         fitinf = self.nu.events.tracks.fitinf