diff --git a/readers.py b/readers.py
index <HASH>..<HASH> 100644
--- a/readers.py
+++ b/readers.py
@@ -6,23 +6,36 @@
 
 class AbstractReader(object):
     """
+    Reader, allows to read a file in two different ways:
+        - Read the whole file at once and return it as a string.
+        - Iterate over the file, one line at a time.
+
+    Use with the with statement.
     """
     def __init__(self, filename, iterable=False, encoding='utf-8'):
         """
+        Read the file in `filename`. If iterable=True, it can iterate over
+        a file, returning one line at a time
         """
         self.filename = filename
         self.iterable = iterable
         self.encoding = encoding
 
-    def __enter__(self):
+    def open_file(self):
         self.open_file = open(self.filename, encoding=self.encoding)
+        
+    def close_file(self):
+        self.open_file.close()
+
+    def __enter__(self):
+        self.open_file()
         if self.iterable:
             return self
         else:
             return self.open_file.read()
 
     def __exit__(self, *args):
-        self.open_file.close()
+        self.close_file()
 
     def read(self):
         return "".join(line for line in open_file.readlines())
add open_file(), close_file() and docs