diff --git a/README.md b/README.md
index 874b59a8a3d3704bd3b34f15fa8f7374e880bdad..69efa1c0815fa9578db03b70ecfeb94935ba59c6 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ So no variable encoding for you!
 
 ## v0.2
 
-* _TBA_
+* added `get_open_series`
 
 ## v0.1
 
diff --git a/docs/conf.py b/docs/conf.py
index ed098b54bd0299a63ff73cb023719d54a0d89263..3c743542406a49224d48a78a1c2bc950269fa845 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -16,11 +16,13 @@
 
 
 # -- Project information -----------------------------------------------------
+import pkg_resources
 
 project = 'tempsdb'
 copyright = '2020, Piotr Maślanka'
 author = 'Piotr Maślanka'
 
+release = pkg_resources.require("tempsdb")[0].version
 
 # -- General configuration ---------------------------------------------------
 
diff --git a/setup.py b/setup.py
index 5675e035b8323a37d94e60842123d14c15aee7bc..3fa4d7d5cd14d044b166c87867ac3524ea818181 100644
--- a/setup.py
+++ b/setup.py
@@ -21,7 +21,7 @@ def find_pyx(*path) -> tp.List[str]:
 #
 
 setup(name='tempsdb',
-      version='0.2_a1',
+      version='0.2_a2',
       packages=['tempsdb'],
       install_requires=['satella>=2.14.21', 'ujson'],
       ext_modules=build([Multibuild('tempsdb', find_pyx('tempsdb')), ],
diff --git a/tempsdb/database.pxd b/tempsdb/database.pxd
index cfe5710b8a07839ee38ec04985833f88b5f826ee..b837ae6577133aba159eaab6736e3378dbd14ef0 100644
--- a/tempsdb/database.pxd
+++ b/tempsdb/database.pxd
@@ -14,6 +14,7 @@ cdef class Database:
     cpdef TimeSeries create_series(self, str name, int block_size,
                                    unsigned long entries_per_chunk,
                                    int page_size=*)
+    cpdef list get_open_series(self)
 
 cpdef Database create_database(str path)
 
diff --git a/tempsdb/database.pyx b/tempsdb/database.pyx
index bf83cd5099a2c0d164b5dcf292604a44763738eb..96a294e3d2be663224ea3209736016064f501ff1 100644
--- a/tempsdb/database.pyx
+++ b/tempsdb/database.pyx
@@ -1,6 +1,8 @@
 import os
 import threading
 
+from satella.coding import DictDeleter
+
 from tempsdb.exceptions import DoesNotExist, AlreadyExists
 from .series cimport TimeSeries, create_series
 
@@ -20,6 +22,28 @@ cdef class Database:
         self.lock = threading.Lock()
         self.mpm = None
 
+    cpdef list get_open_series(self):
+        """
+        Return all open series
+        
+        .. versionadded:: 0.2
+        
+        :return: open series
+        :rtype: tp.List[TimeSeries]
+        """
+        cdef:
+            list output = []
+            TimeSeries series
+            str name
+        with self.lock:
+            with DictDeleter(self.open_series) as dd:
+                for name, series in dd.items():
+                    if series.closed:
+                        dd.delete()
+                    else:
+                        output.append(series)
+        return series
+
     cpdef TimeSeries get_series(self, name: str):
         """
         Load and return an existing series
@@ -92,8 +116,7 @@ cdef class Database:
         self.mpm = mpm
         cdef TimeSeries series
         for series in self.open_series.values():
-            if not series.closed:
-                series.register_memory_pressure_manager(mpm)
+            series.register_memory_pressure_manager(mpm)    # no-op if already closed
         return 0
 
     def __del__(self):
@@ -106,8 +129,10 @@ cdef class Database:
         if self.closed:
             return 0
         cdef TimeSeries series
-        for series in self.open_series.values():
-            series.close()
+        with self.lock:
+            for series in self.open_series.values():
+                series.close()  # because already closed series won't close themselves
+            self.open_series = {}
         self.closed = True
         return 0
 
diff --git a/tempsdb/series.pyx b/tempsdb/series.pyx
index 41a9bb7a55416b7383c856b062e19c598fcda7d5..038cb1aa8ed023d793b33565da11448e7e358760 100644
--- a/tempsdb/series.pyx
+++ b/tempsdb/series.pyx
@@ -276,8 +276,12 @@ cdef class TimeSeries:
         Register a memory pressure manager.
         
         This registers :meth:`~tempsdb.series.TimeSeries.close_chunks` as remaining in severity
-        to be called each 30 minutes.
+        to be called each 30 seconds.
+        
+        No op if already closed
         """
+        if self.closed:
+            return
         self.mpm = mpm.register_on_remaining_in_severity(1, 30)(self.close_chunks)
 
     cpdef int close_chunks(self) except -1: