diff --git a/.coveragerc b/.coveragerc
index 001df73cf25030d81c4bc49cc70c5ae66bd7f27f..62eb0ed383b1c0e759180db7f5d40fe46c9e9908 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -8,7 +8,6 @@ omit=
   tests/*
   .eggs/*
   setup.py
-  tempsdb/__init__.py
 
 [report]
 include=
diff --git a/requirements.txt b/requirements.txt
index 2fe238cfb6d36a0700aac897d9433cd41260142e..39ce8d3b742bdad46630addbf64b257d9e1fb775 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
 satella
 ujson
-snakehouse
+snakehouse>=1.2.3
 six
diff --git a/setup.py b/setup.py
index 86f800f9e42743cdbd7b111da3e265de9c98b613..69dafaa661f1082e4ec743ba1ea99b7d588d4fde 100644
--- a/setup.py
+++ b/setup.py
@@ -2,12 +2,11 @@ import os
 import typing as tp
 
 from Cython.Build import cythonize
-from satella.distutils import monkey_patch_parallel_compilation
 from satella.files import find_files
 from distutils.core import setup
 
 from setuptools import Extension
-from snakehouse import Multibuild, build
+from snakehouse import Multibuild, build, monkey_patch_parallel_compilation
 
 
 def find_pyx(*path) -> tp.List[str]:
@@ -23,15 +22,17 @@ monkey_patch_parallel_compilation()
 #               Extension('tempsdb.iterators', ['tempsdb/iterators.pyx'])]
 #
 directives = {'language_level': '3'}
+m_kwargs = {}
 if 'CI' in os.environ:
     directives.update(profile=True, linetrace=True, embedsignature=True)
+    m_kwargs['define_macros'] = [("CYTHON_TRACE_NOGIL", "1")]
 
 
 setup(name='tempsdb',
-      version='0.5.0a9',
+      version='0.5a10',
       packages=['tempsdb'],
       install_requires=['satella>=2.14.21', 'ujson'],
-      ext_modules=build([Multibuild('tempsdb', find_pyx('tempsdb')), ],
+      ext_modules=build([Multibuild('tempsdb', find_pyx('tempsdb'), **m_kwargs), ],
                         compiler_directives=directives),
       # ext_modules=cythonize(extensions,
       #                   gdb_debug=True,
diff --git a/tempsdb/series.pyx b/tempsdb/series.pyx
index baaa9eee3b2f0832de02d6ecf4cc8b84ff4be4ec..c1966ffd8536853d00db88175e54f304bfe57891 100644
--- a/tempsdb/series.pyx
+++ b/tempsdb/series.pyx
@@ -177,14 +177,19 @@ cdef class TimeSeries:
         Acquires a reference to the chunk.
         
         :param name: name of the chunk
+        :param is_direct: is this a direct chunk?
+        :param is_gzip: is this a gzipped chunk?
         :return: chunk
         :raises DoesNotExist: chunk not found
         :raises InvalidState: resource closed
+        :raises ValueError: chunk was gzipped but not direct
         """
         if self.closed:
             raise InvalidState('Series is closed')
         if name not in (v[0] for v in self.chunks):
-            raise DoesNotExist('Invalid chunk!')
+            raise DoesNotExist('Invalid chunk')
+        if is_gzip and not is_direct:
+            raise ValueError('Chunk that is gzipped must be direct')
         cdef Chunk chunk
         with self.open_lock:
             if name not in self.open_chunks:
@@ -530,4 +535,5 @@ cpdef TimeSeries create_series(str path, str name, unsigned int block_size,
     if gzip_level:
         meta['gzip_level'] = gzip_level
     write_json_to_file(os.path.join(path, 'metadata.txt'), meta)
-    return TimeSeries(path, name)
+    return TimeSeries(path, name,
+                      use_descriptor_based_access=use_descriptor_based_access)
diff --git a/tempsdb/varlen.pxd b/tempsdb/varlen.pxd
index 173e81179334234a7aed239de34f359530d623da..e792533cadb3c89774abdc8e03a460d1686a86c4 100644
--- a/tempsdb/varlen.pxd
+++ b/tempsdb/varlen.pxd
@@ -1,4 +1,4 @@
-from .series cimport TimeSeries
+from .series cimport TimeSeries, create_series
 
 
 cdef class VarlenSeries:
diff --git a/tempsdb/varlen.pyx b/tempsdb/varlen.pyx
index 4100c47974d0aa810a921a8938edf28b025c0d4c..4e1b39386ea92bcebfc856b56c6c7a8a1814f395 100644
--- a/tempsdb/varlen.pyx
+++ b/tempsdb/varlen.pyx
@@ -7,7 +7,7 @@ import warnings
 from .chunks.base cimport Chunk
 from .exceptions import Corruption, AlreadyExists, StillOpen
 from .iterators cimport Iterator
-from .series cimport TimeSeries, create_series
+from tempsdb.series cimport TimeSeries, create_series
 
 
 cdef class VarlenEntry:
@@ -552,6 +552,8 @@ cdef class VarlenSeries:
         
         Updates :attr:`~tempsdb.varlen.VarlenSeries.current_maximum_length`.
         """
+        from tempsdb.series import create_series
+
         cdef:
             int new_name = len(self.series)
             int new_len = self.get_length_for(new_name)
@@ -561,6 +563,8 @@ cdef class VarlenSeries:
                                               new_len,
                                               self.max_entries_per_chunk,
                                               gzip_level=self.gzip_level)
+        if self.mpm is not None:
+            series.register_memory_pressure_manager(self.mpm)
         self.series.append(series)
         self.current_maximum_length += new_len
 
@@ -636,7 +640,7 @@ cpdef VarlenSeries create_varlen_series(str path, str name, int size_struct, lis
     :raises AlreadyExists: directory exists at given path
     :raises ValueError: invalid length profile or max_entries_per_chunk or size_struct
     """
-    from .series import create_series
+    from tempsdb.series import create_series
 
     if os.path.exists(path):
         raise AlreadyExists('directory present at paht')
diff --git a/unittest.Dockerfile b/unittest.Dockerfile
index bccaee128e06f1d891c83204193b8f90f442213e..e3aa11357ec9d96d01b3682aa1c796aa43876629 100644
--- a/unittest.Dockerfile
+++ b/unittest.Dockerfile
@@ -1,15 +1,14 @@
 FROM python:3.8
 
-RUN pip install satella>=2.14.24 snakehouse nose2 wheel ujson coverage
+RUN pip install satella snakehouse>=1.2.3 nose2 wheel ujson coverage
 
 ADD tempsdb /app/tempsdb
 ADD setup.py /app/setup.py
 ADD .coveragerc /app/.coveragerc
 ADD setup.cfg /app/setup.cfg
 WORKDIR /app
-
 ENV CI=true
 RUN python setup.py build_ext --inplace
 ADD tests /app/tests
 
-CMD ["nose2", "-vv"]
+CMD ["coverage", "run", "-m", "nose2", "-vv"]